在子文件夹中执行gulp命令

我的项目结构如下:

myapp -server.js -test --testcontent ---package.json -package.json 

我有两个package.json文件,我想在testcontent文件夹内的package.json上运行npm install

如果在命令行中,我去myapp/test/testcontent然后运行npm install它会工作,它会从正确的package.json创build一个新的文件夹node_modules 。 怎么可以从内部完成呢?

我尝试了以下,但它使用myapppackage.json而不是testcontent子文件夹中的testcontent

 gulp.task('default', function () { var options = { continueOnError: true, // default = false, true means don't emit error event pipeStdout: true, // default = false, true means stdout is written to file.contents customTemplatingThing: "test" // content passed to gutil.template() }; var reportOptions = { err: true, // default = true, false means don't write err stderr: true, // default = true, false means don't write stderr stdout: true // default = true, false means don't write stdout } gulp.src('test/testcontent/') .pipe(exec('npm install' , options)) .pipe(exec.reporter(reportOptions)); }); 

gulp-exec是这个工作的错误工具。 事实上, gulp-exec插件的作者明确build议不要像你所做的那样使用它:

注意:如果你只是想运行一个命令,只需运行命令,不要使用这个插件

而是使用node.js内置的child_process.spawn() 。 您可以使用cwd选项传递应执行该命令的目录:

 var spawn = require('child_process').spawn; gulp.task('default', function(done) { spawn('npm', ['install'], { cwd: 'test/testcontent/', stdio: 'inherit' }) .on('close', done); });