私はgulp-watchとLiveReloadをセットアップしました。それは何とか働くが、ほとんどの時間は間違っている。 LiveReloadは、ブラウザがファイルをリロードするよりも早くリロードイベントを出すように感じます。私はこのようにそれを説明することができます: は時々ページがすでに新しいですgulp-watchとLiveReloadが遅すぎます。
- いくつかのファイルが私のsrcディレクトリに
- を変更しましたそれはそれはまだコンパイルされている間
- をコンパイルするために開始し、ブラウザがページをリロードすると、正しい。ほとんどの場合、古いものです。時にはそのページの唯一の部分。
- リロードしても問題ありません。
gulp-watchとLiveReloadを統合している間に私は間違いを犯したと思います。あなたは私が1つを見つけるのを助けることができますか?
ここにある私のgulpfile.js:
var gulp = require('gulp');
var jade = require('gulp-jade');
var sass = require('gulp-sass');
var watch = require('gulp-watch');
var connect = require('gulp-connect');
var favicons = require('gulp-favicons');
var ga = require('gulp-ga');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
var responsive = require('gulp-responsive');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var print = require('gulp-print');
gulp.task('default', ['jade', 'sass', 'js', 'connect', 'watch']);
gulp.task('jade', function() {
gulp.src('./src/jade/*.jade')
.pipe(jade())
.pipe(ga({url: 'auto', uid: config.gaId, tag: 'body',sendPageView: true, minify: false, anonymizeIp: false}))
.pipe(gulp.dest('./public/'));
});
gulp.task('sass', function() {
gulp.src('./src/sass/style.scss')
.pipe(sass({
includePaths: [
config.bowerDir + '/bootstrap/scss',
config.bowerDir + '/font-awesome/scss'
],
outputStyle: 'compressed'
})
.on('error', sass.logError))
.pipe(postcss([ autoprefixer({ browsers: ['last 2 versions'] }) ]))
.pipe(gulp.dest('./public/css'));
});
gulp.task('connect', function() {
connect.server({
root: 'public',
livereload: true
});
});
gulp.task('watch', function() {
gulp.watch(['./src/jade/**/*.jade'], ['jade']);
gulp.watch(['./src/sass/**/*.scss'], ['sass']);
gulp.watch(['./src/js/**/*.js'], ['js']);
watch(['./public/**/*.html', './public/**/*.css', './public/**/*.js']).pipe(connect.reload());
});
gulp.task('js', function() {
return gulp.src([
'./node_modules/fontfaceobserver/fontfaceobserver.js',
'./bower_components/jquery/dist/jquery.min.js',
'./bower_components/bootstrap/js/dist/util.js',
'./bower_components/bootstrap/js/dist/collapse.js',
'./bower_components/picturefill/dist/picturefill.js',
'./src/js/modernizr.js',
'./src/js/js.js'
])
.pipe(concat({ path: 'js.js'}))
.pipe(uglify())
.pipe(gulp.dest('./public/js'));
});
完全なソースはここhttps://gist.github.com/dandaka/3e342158763f9ccbd23305eecfd0b69c
ですありがとうございました!例えばJSなどのタスクのそれぞれの終わりに
これは実際には機能しません。例えば 'reload'が開始される前に' jade'タスクが完了するという保証はありません。ウォッチイベントのために実行するように定義されたタスクはすべて同時に実行されます。私はそれを試してみました。 – Fencer
@Fencerそれは実際に[StackOverflowの質問](https://stackoverflow.com/questions/37970787/gulp-watch-does-not-run-tasks-in-order)のいずれかで議論された問題です。それに対する可能な解決策を見出す。 –
はい、私はそれを認識しています。しかし、この答えは問題自体の解決策ではないという事実は変わりません。私は他の読者にもそのことを明確にしたいと思っていましたし、実際の解決策を提供したいと思いました(私の答えを見てください)。しかし、Gulp 3の 'run-sequence'の使い方は良いヒントです。それをあなたの答えに組み込むなら、本当に適切な解決策になるでしょう。 – Fencer