从Grunt任务运行项目文件夹内的shell命令

时间:2016-07-29 08:08:58

标签: node.js shell cordova gruntjs

我有一个shell命令./node_modules/cordova/bin/cordova,可以从项目根目录访问。

我还有一组Grunt配置文件,位于./config文件夹中。

现在我正在尝试从任务中运行cordova并希望将其用作别名,所以在Gruntfile.js中我有这样的:

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

})

然后,从一个任务我运行它:

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

结果我收到了这个错误:

  

''不被视为内部或外部命令,

如果我更换

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

cordovaCommand: 'node_modules/cordova/bin/cordova'

然后我看到了这个错误:

  

'node_modules'未被识别为内部或外部命令,

所以,我想它可能是相对路径以及Grunt如何使用它们的东西?我在哪里可以解决这个问题,因为我需要使用本地安装的cordova,而不是全局。

1 个答案:

答案 0 :(得分: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'),

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