2016-07-29 44 views
1

我有一个shell命令./node_modules/cordova/bin/cordova,它可以从项目根目录访问。从Grunt任务运行一个项目文件夹内的shell命令

我也有一组配置文件为Grunt位于./config文件夹。

现在我试图从任务运行科尔多瓦,想使用它作为一个别名,所以在Gruntfile.js我有这样的:

grunt.initConfig({ 
    buildDir: 'build/interim_builds', 
    publishDir: 'build/publish', 
    cordovaCommand: './node_modules/cordova/bin/cordova', 
    ... 

})

然后,从任务我运行它是这样的:

mobileApp_create: { 
    cmd: '<%= cordovaCommand %> create <%= mobileAppProjectDir %>' 
} 

结果我得到这个错误:

'.' is not recognized as an internal or external command,

如果我更换

cordovaCommand: './node_modules/cordova/bin/cordova' 

cordovaCommand: 'node_modules/cordova/bin/cordova' 

然后,我看到这个错误:

'node_modules' is not recognized as an internal or external command,

所以,我想这可能是一些相对路径和咕噜如何与他们?在哪里可以解决这个问题,因为我需要使用cordova的本地安装,而不是全局的。

+1

不,如果你使用完整路径它的工作? – fedorqui

+0

如果我使用运行全局安装的cordova的'cordova create <%= mobileAppProjectDir%>',它可以工作,但如果我将它运行为'./node_modules/cordova/bin/cordova create <%= mobileAppProjectDir %>' –

+0

也许试试用这个:https://github.com/csantanapr/grunt-cordovacli。 – johnborges

回答

0

你可以尝试完全在运行时解决的路径,这样,有没有相对路径:

var path = require('path'); 

module.exports = function(grunt) { 

    grunt.initConfig({ 
    buildDir: 'build/interim_builds', 
    publishDir: 'build/publish', 
    cordovaCommand: path.resolve('./node_modules/cordova/bin/cordova'), 

    // ... 
    }); 
    // ... 
};