吞吐量通知发生在任务完成之前

无法理解吞咽(我是新来的)。

我想自动化产品构build,涉及到从gitlab回购克隆。

我不明白为什么我需要src('package.json')在那里,这是一种什么样的伎俩? 我也不明白为什么我会在任务开始时得到通知,而不是在结束!

 var gulp = require('gulp'); var git = require('gulp-git-streamed'); var notify = require('gulp-notify'); gulp.task('clone', function() { return gulp .src('package.json') // wth is this? .pipe(git.clone('https://gitlab.somedomain.com/mockups/theme.git', {args: './src/gitlab/mockups'})) .pipe(notify('psd repo cloned!')); // why does this run before cloning is finished? }); 

会发生什么是:

 [13:16:34] gulp-notify: [Gulp notification] psd repo cloned! [13:20:23] Cloning into './src/gitlab/mockups'... Checking out files: 100% (18/18), done. 

有什么想法吗?

gulp-git-streamedgulp-git-streamed一个包装,它允许你将git操作应用到stream中的文件。 这对于添加和提交文件是有意义的:

 return gulp.src('**/*.js') .pipe(git.add()) .pipe(git.commit('Commit all JS files')) 

但是,对于clone操作来说,这是毫无意义的。 gulp-git-streamed并不实际将克隆文件发送到stream中,因为它需要现有stream才能开始,因此必须人为地创build一个带有伪文件的文件,这个文件就像package.json一样存在。

在你的情况下,最好直接使用gulp-gitnode-notifier

 var gulp = require('gulp'); var git = require('gulp-git'); var notifier = require('node-notifier'); gulp.task('clone', function(done) { git.clone('https://gitlab.somedomain.com/mockups/theme.git', {args: './src/gitlab/mockups'}, function (err) { if (err) { notifier.notify(err.message); } else { notifier.notify('psd repo cloned!'); } done(); }); }); gulp.task('dependsOnClone', ['clone'], function(done) { console.log('starts executing after clone task has finished'); });