2016-04-08 27 views
1

ガルプの理解に問題がある(新機能)。タスクが完了する前にガルプ通知が発生する

私は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. 

任意の考え?

答えて

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のようなダミーファイルを人工的に作成する必要があります。

あなたのケースでは、それだけで直接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'); 
}); 
+0

はい、私はそのアプローチの問題は、私はもう鎖クローンタスクをすることができないことである、ことを試みました。 –

+0

は、クローンの前に実行されるクローンに依存するタスクを意味します。少なくとも、これは回避されます。 –

+0

あなたの実装で 'done()'コールバックを使うことを忘れたのでしょう。私のことを試してください。 'clone'タスクに依存するタスクは、' clone'タスクが終了した後にのみ開始されます。 –

関連する問題