2016-09-26 7 views
0

私は様々なタスクを含むgulpファイルを持っています。最初のタスクはsassファイルを作成し、後のタスクはそのファイルを使用することを意味します。 両方のタスクを明示的に実行した場合(gulp sass、sassファイルが作成されていることを確認してからgulp template-cacheを実行してください)、正常に動作します。先行タスクが必要なファイルを作成しないため、Gulpタスクが失敗する

しかし、これらのタスクを連結するgulpタスクを実行すると、ファイルtemplate-cacheがまだ作成されていないため、タスクは失敗します。sassタスクはすでに完了していると主張しています。 これらの2つの一気のタスクです:

gulp.task('sass', function(){ 
    sass(PATH.APP + '/**/*.scss', {sourcemap: true, style: 'expanded', compass: true}) 
    .pipe(autoprefixer({browsers:['last 4 versions']})) 
    .pipe(sourcemaps.write()) 
    .on('error', sass.logError) 
    .pipe(gulp.dest(PATH.APP)) 
    .pipe(livereload()); 
}); 

gulp.task('template-cache', function() { 
    return gulp.src(PATH.APP + '/*/**/*.html') 
    .pipe(templateCache({ filename:'templates.js', module:'app' })) 
    .pipe(gulp.dest(PATH.DIST + '/scripts')); 
}); 

これは、ビルドを実行するゴクゴクタスクです:

gulp.task('default', sequence(
    ['sass', 'replace-config-local'], 
    'build', 
    'icons', 
    'revision' 
    ,'uglify' 
)); 

そして、これはビルドタスクです:

gulp.task('build', sequence('clean', ['useref', 'template-cache'], 'concat', 'delete-templates'));

エラーメッセージ私は次のようになります:

gulp 
[16:41:37] Using gulpfile ~/backoffice/gulpfile.js 
[16:41:37] Starting 'default'... 
[16:41:37] Starting 'sass'... 
[16:41:37] Finished 'sass' after 46 ms 
[16:41:37] Starting 'replace-config-local'... 
[16:41:37] Finished 'replace-config-local' after 84 ms 
[16:41:37] Starting 'build'... 
[16:41:37] Starting 'clean'... 
[16:41:37] Finished 'clean' after 14 ms 
[16:41:37] Starting 'useref'... 
[16:41:38] Starting 'template-cache'... 
events.js:141 
     throw er; // Unhandled 'error' event 
    ^

Error: Error: File not found with singular glob: /home/ubuntu/backoffice/app/styles/main.css 
    at DestroyableTransform.<anonymous> (/home/ubuntu/backoffice/node_modules/gulp-useref/index.js:65:28) 
    at emitOne (events.js:82:20) 
    at DestroyableTransform.emit (events.js:169:7) 
    at emitOne (events.js:77:13) 
    at DestroyableTransform.emit (events.js:169:7) 
    at Glob.<anonymous> (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/index.js:40:16) 
    at Glob.g (events.js:260:16) 
    at emitOne (events.js:77:13) 
    at Glob.emit (events.js:169:7) 
    at Glob._finish (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:172:8) 
    at done (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:159:12) 
    at Glob._processSimple2 (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:652:12) 
    at /home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:640:10 
    at Glob._stat2 (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:736:12) 
    at lstatcb_ (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:728:12) 
    at RES (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/inflight.js:23:14) 
    at f (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/once.js:25:25) 
    at FSReqWrap.oncomplete (fs.js:82:15) 
+0

あなたの 'sass'はストリームを返すべきです。さもなければ、Gulpはそれが終了したことを知らないでしょう。しかしそれとは別に、私は何が間違っているのか本当に理解していません。 'template-cache'タスクは' sass'タスクによって作られた何も使用しません。 'sass'タスクがCSSを出力するのに対して、HTMLファイルだけを探します。彼らは決して関連しているようには見えません。エラーが他のものから来ているようです。 – MadScone

+0

ありがとう@MadScone、あなたは両方のアカウントで正解です。私たちは今日バグを見つけました。そしてそれは実際にストリームを返さないことによって引き起こされました。 テンプレートキャッシュがタスクに失敗していませんでした。これは、それがパラレルに実行されていたuserefタスクでした。あなたが答えとしてあなたのコメントを投稿するなら、私はそれを受け入れることを嬉しく思います。 –

+0

@MadScone、私は答えとしてあなたのコメントを追加し、それを受け入れています。自分で信用を得るために自分でやりたいのであれば、私は自分の答えを消去します。 –

答えて

0

@MadSconeがコメントで提案したように、ストリームを返すことで問題は解決しました。 たとえば、gulp.src(PATH.DIST + '/**')return gulp.src(PATH.DIST + '/**')に変更します。

関連する問題