Node.js 从Grunt任务运行项目文件夹中的shell命令
我有一个shell命令Node.js 从Grunt任务运行项目文件夹中的shell命令,node.js,shell,cordova,gruntjs,Node.js,Shell,Cordova,Gruntjs,我有一个shell命令/node\u modules/cordova/bin/cordova,可以从项目根目录访问该命令 我还有一组Grunt的配置文件,它们位于/config文件夹中 现在,我尝试从任务运行cordova,并希望将其用作别名,因此在GrunFile.js中,我将其设置为: grunt.initConfig({ buildDir: 'build/interim_builds', publishDir: 'build/publish', cordovaCom
/node\u modules/cordova/bin/cordova
,可以从项目根目录访问该命令
我还有一组Grunt的配置文件,它们位于/config
文件夹中
现在,我尝试从任务运行cordova,并希望将其用作别名,因此在GrunFile.js中,我将其设置为:
grunt.initConfig({
buildDir: 'build/interim_builds',
publishDir: 'build/publish',
cordovaCommand: './node_modules/cordova/bin/cordova',
...
mobileApp_create: {
cmd: '<%= cordovaCommand %> create <%= mobileAppProjectDir %>'
}
})
然后,我从一个任务中运行它,如下所示:
grunt.initConfig({
buildDir: 'build/interim_builds',
publishDir: 'build/publish',
cordovaCommand: './node_modules/cordova/bin/cordova',
...
mobileApp_create: {
cmd: '<%= cordovaCommand %> create <%= mobileAppProjectDir %>'
}
与
然后我看到这个错误:
“节点_模块”未被识别为内部或外部命令
所以,我想可能是有相对路径的东西,以及Grunt是如何处理它们的?由于我需要使用cordova的本地安装,而不是全局安装,我应该从何处着手解决此问题。您可以尝试在运行时完全解析路径,这样就没有相对路径:
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'),
// ...
});
// ...
};
您可以尝试在运行时完全解析路径,这样就没有相对路径:
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'),
// ...
});
// ...
};
如果使用完整路径是否有效?如果我使用运行全局安装的cordova(如果可用)的
cordova create
,则有效,但是,如果我以/node\u modules/cordova/bin/cordova create
的形式运行它,则不起作用。可以尝试改用此选项:。如果使用完整路径,则有效吗?如果使用运行全局安装的cordova的cordova create
,则有效,但是,如果我以/node\u modules/cordova/bin/cordova create
的形式运行它,则它不起作用。请尝试改用以下方式:。