立即执行子文件夹的命令



我的项目结构如下:

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

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

如果在命令行中,我转到myapp/test/testcontent并运行npm install,它就会工作,并创建一个新的文件夹node_modules,其中包含来自正确package.json的依赖项。怎么能一口吞下?

我尝试了以下操作,但它使用了myapp中的package.json,而不是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插件的作者明确建议不要像现在这样使用它:

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

相反,您使用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);
});

相关内容

  • 没有找到相关文章

最新更新