2016-04-08 3 views
7

вот мой текущий список наблюдения для моих gulpfile.jsGulpfile.js смотреть лучшие практики

// Gulp watchlist 
gulp.task('watch', ['browserSync', 'sass'], function(){ 
    gulp.watch('app/scss/**/*.scss', ['sass']); 
    gulp.watch('app/*.html').on('change', browserSync.reload); 
    gulp.watch('app/js/**/*.js').on('change', browserSync.reload); 
    //add more watchers here 
}); 

и это работает.

но учебник я слежу есть что-то немного другое:

gulp.task('watch', ['browserSync', 'sass'], function(){ 
    gulp.watch('app/scss/**/*.scss', ['sass']); 
    // Reloads the browser whenever HTML or JS files change 
    gulp.watch('app/*.html', browserSync.reload); 
    gulp.watch('app/js/**/*.js', browserSync.reload); 
}); 

мне нужен .По ('изменения', browserSync.reload)? оно работает; Мне просто интересно, что то, что я делаю, - это не хорошая практика. Благодаря!

ответ

1

Нет, вам не нужно добавлять пользовательские on('change'). Вы должны передать обработчик события при инициализации наблюдателя, как учебник. В противном случае, это похоже на то, что я говорю gulp, чтобы ничего не делать при изменении по умолчанию, а затем добавить своего слушателя.

Другим преимуществом является то, вы можете передать несколько обработчиков событий на одном дыхании, как массив, если ваши обработчики глотком задачи сами gulp.watch(..., ['task1', 'task2']) вместо цепочки on('change', task1Function).on('change', task2Function)

+0

Я вижу, спасибо ... я должен следить за вопрос, то я Угадай ... порядок массива имеет значение, не так ли? Так что, если я хочу минимизировать все до перезагрузки broswersync, я должен попробовать просто иметь браузеры в конце массива да? или ... нет? lol –

+0

Да, это правильно :), но тогда вам нужно понять, что задачи gulp являются асинхронными по своей природе, поэтому я бы сделал функцию вместо этого и вызывал ваших обработчиков синхронно! –

1

Глоток watch всегда возвращает EventEmitter, испускающее событие изменения, поэтому вызов gulp.watch('app/*.html').on('change', browserSync.reload) можно записать в виде:

var watcher = gulp.watch('app/*.html'); 
watcher.on('change', browserSync.reload); 

watch функция может быть вызвана следующим Params: gulp.watch(glob [, opts], tasks) или gulp.watch(glob [, opts, cb]).

Таким образом, вы можете использовать оба варианта, но предпочтительнее использовать более короткий метод.