我正在尝试创建一个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');
});发布于 2016-03-29 03:58:59
这是因为exec()的本质。什么exec()允许您给它的命令“接管”当前进程。您可以做的是尝试类似于child_process.spawn的东西。如果是守护进程的话。
好好看看工艺文件。我认为这应该能帮你找到一个好的开始。
其他可能有帮助的选项包括修改脚本以将退出代码抛出以便Gulp识别,或者使用超时来知道gulp任务何时结束。
更新:或者,您也可以使用这个,这就是我在运行web服务器时发现的工作方法。shell.exec('./update_assets.sh', {async:true} );
https://stackoverflow.com/questions/33222093
复制相似问题