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');
});

这是由于exec()的性质。exec()的作用是允许您给它的命令"接管"当前进程。你可以试试child_process.spawn。如果是守护进程

仔细查看Child_Process文档。我想这会帮助你有一个好的开始。

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

UPDATE:或者,你可以使用这个,这是我发现在运行web服务器时对我有效的。shell.exec('./update_assets.sh', {async:true} );

最新更新