无法理解gulp(我是新的)。
我想自动化产品构建,其中包括从gitlab repo克隆。
我不明白为什么我需要src('package.json')
,这是一种什么样的伎俩?我也不知道为什么我会在任务开始时收到通知,而不是在最后![/ p>
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.
有什么想法吗?
答案 0 :(得分:2)
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
。< / p>
在您的情况下,最好直接使用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');
});