Gulp Child Process挂起

时间:2015-10-19 19:12:53

标签: gulp

我正在尝试创建一个gulp任务,通过执行shell脚本来更新项目中的所有资产。问题是它按预期执行然后挂起。

'use-strict';

var gulp  = require('gulp'),
    gutil = require('gulp-util');
    exec    = require('child_process').exec;
var foreach = require('gulp-foreach');

gulp.task('update-assets', function () {
        exec('./update_assets.sh', {cwd: 'assets'}, function(err, stdout, stderr) {
        console.log(stdout);
        console.log(stderr);
        cb(err);
    });
});

gulp.task('default', ['update-assets'], function() {
    gulp.start('update-assets');
});

1 个答案:

答案 0 :(得分:1)

这是因为exec()的性质。什么exec()它允许你给它的命令"接管"目前的过程。你可以做的是尝试child_process.spawn之类的东西。如果它是一个守护进程。

好好看看Child_Process documentation。我认为这可以帮助你获得良好的开端。

其他可能有用的选项包括修改脚本以抛出Gulp识别的退出代码,或使用超时来知道gulp任务何时终止。

更新:或者,您可以使用此功能,这是我在运行Web服务器时发现的功能。     shell.exec('./update_assets.sh', {async:true} );