像父进程一样生成生成gulp进程的格式输出

时间:2016-11-03 12:01:54

标签: node.js process gulp pipe

用例:在大型项目中,将自己的构建过程中的小项目分成自己的文件夹会很不错。

以下设置基本上适用于Windows和Mac - 我得到了在控制台中记录的子gulp进程的输出 - 唯一的问题是它没有像父进程的输出那样着色。

var spawnCmd = require('spawn-cmd');

gulp.task('default', function () {
    // Run all the parent projects tasks first
    // ....
    // ....
    // ....

    // When done, cd to child directory
    process.chdir('./some-dir-that-has-a-gulpfile');

    // Run `gulp` in the child directory
    var child = spawnCmd.spawn('gulp', ['default']);

    // And pipe the output to the current process
    child.stdout.pipe(process.stdout);
});

我的问题是如何以与普通gulp过程完全相同的方式显示child gulp进程的输出。

修改:Is it possible for child processes in Node.js to preserve colored output?

重复

1 个答案:

答案 0 :(得分:2)

您应该继承父进程的 stdio 。这正确地将输出管道输出到相同的输出,颜色和所有。

由于您使用的是gulp,因此您还应添加--color always标记,以便gulp正确检测您想要的颜色。

var spawnCmd = require('spawn-cmd');

gulp.task('default', function () {
    // When done, cd to child directory
    process.chdir('./some-dir-that-has-a-gulpfile');

    // Run `gulp` in the child directory
    var child = spawnCmd.spawn('gulp', ['default', '--color', 'always'], {stdio: 'inherit'});
});