难以理解吞咽(我是新来的)。
我想要自动化的产品建设,其中涉及克隆从一个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.有什么想法吗?
发布于 2016-04-08 10:33:57
gulp-git-streamed是gulp-git的包装器,它允许您将git操作应用于流中的文件。这对于添加和提交文件这样的事情是有意义的:
return gulp.src('**/*.js')
.pipe(git.add())
.pipe(git.commit('Commit all JS files'))然而,对于clone操作来说,这是毫无意义的。gulp-git-streamed实际上并不会将克隆的文件发送到流中,因为它需要一个现有的流开始,所以您必须人为地创建一个虚拟文件,您知道该文件与package.json一样存在。
在您的情况下,最好直接使用gulp-git和node-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');
});https://stackoverflow.com/questions/36496111
复制相似问题