callback
正在解雇,但任务只挂在Finished 'hooks:pull' after 2.04 s
gulp.task('hooks:pull', function(callback){
var files = [
{ remote: '~/deploy/test.example.com/hooks/post-receive', local: './bin/post-receive.test' },
{ remote: '~/deploy/staging.example.com/hooks/post-receive', local: './bin/post-receive.staging' },
{ remote: '~/deploy/example.com/hooks/post-receive', local: './bin/post-receive.production' }
];
async.each(files, function(file, cb) {
var opts = {
host: 'example.com'
};
opts.file = file.remote;
opts.path = file.local;
scp.get(opts, function(err) {
if (err) {
console.error(err);
return cb(err);
}
console.log('%s hook has been pulled!', file.local);
cb();
});
}, function(err){
if ( err ) {
console.error(err);
return callback(err);
}
callback();
});
});
如何让它调用回调并退出/返回?
刚刚运行gulp hooks:pull
答案 0 :(得分:4)
如果节点挂起而不是退出,则可能是任务仍在运行。
你可以使用Gulp stop
钩子来杀死它,或者只是为了退出整个事情,如果你不关心(如果你没有在你的任务中启动任何异步清理功能)。
这应该这样做:
process = require("process");
gulp.on('stop', function() { process.exit(0); }
答案 1 :(得分:2)
我发现了我的问题(PEBKAC)
我在gulpfile.js
的顶部有这条线,导致它挂起。
var app = require('./server/index');
不确定我为什么添加它,但删除它修复它。
答案 2 :(得分:0)
使用此设置为我(?)工作:
var gulp = require('gulp');
var async = require('async');
var scp = require('scp');
gulp.task('default', function(callback) {
var files = [
{ remote: '.gitconfig', local: './foo' },
{ remote: '.gitconfig', local: './bar' },
{ remote: '.gitconfig', local: './baz' }
];
async.each(files, function(file, cb) {
scp.get({ host: 'localhost', file: file.remote, path: file.local }, function(err) {
if (err) {
console.error(err);
return cb(err);
}
console.log('%s has been pulled!', file.local);
cb();
});
}, function(err) {
if (err) {
console.error(err);
return callback(err);
}
callback();
});
});
..除了主持人和实际上,它几乎是相同的。文件。