私はこのようなものを持っています:
gulp.task('default', ['css', 'browser-sync'] , function() {
gulp.watch(['sass/**/*.scss', 'layouts/*.css'], function() {
gulp.run('css');
});
});
ただし、sassとlayoutsディレクトリの2つのディレクトリの変更を監視するため、機能しません。
Gulpがそれらのディレクトリ内で発生するすべてを監視できるように、どのように機能させるのですか?
gulp.task('default', ['css', 'browser-sync'] , function() {
gulp.watch(['sass/**/*.scss', 'layouts/**/*.css'], ['css']);
});
sass/**/*.scss
およびlayouts/**/*.css
は、.scss
および.css
ファイルへのすべての変更を監視します。これをanyファイルに変更する場合は、最後のビットを*.*
にしてください
このような時計を書くことができます。
gulp.task('watch', function() {
gulp.watch('path/to/file', ['gulp task name for css/scss']);
gulp.watch('path/to/file', ['gulp task name for js']);
});
このようにして、見たいもののファイルパスの後に作成したタスクの名前を続けて、必要なだけタスクを設定できます。次に、次のようにデフォルトを記述できます。
gulp.task('default', ['gulp task name for css/scss', 'gulp task name for js']);
さまざまなファイルの変更を単に監視する場合は、タスクで*.css
のようなglobを使用してファイルを監視するだけです。
複数の人(私を含む)で発生した問題の1つは、タスクの外にgulp.filterを追加すると、最初のパスの後にgulp.watchが失敗することです。このようなものがある場合:
var filter = gulpFilter(['fileToExclude.js'])
gulp.task('newTask', function(){ ...
次に、次のように変更する必要があります。
gulp.task('newTask', function(){
var filter = gulpFilter(['fileToExclude.js'])
フィルターはタスク関数に含める必要があります。それが誰かを助けることを願っています。
これは私のために働きます(Gulp 4):
function watchSass() {
return gulp.watch(sassGlob, { ignoreInitial: false }, buildCss)
}
function watchImages() {
return gulp.watch(imagesGlob, copyImages)
}
exports.watch = gulp.parallel(watchSass, watchImages)
@ A.J Algerの答えは、Gulp v3.xを使用したときに有効でした。
しかし、Gulp 4からは、次のことがうまくいくようです。
各タスクは値を返すか、「done()」を呼び出す必要があることに注意してください。この例の主なタスクは、他のタスクを並行して呼び出す「watchSrc」です。
gulp.task('watchHtml', function(){
return watch('src/**/*.html', function () {
gulp.src('src/**/*')
.pipe(gulp.dest(BUILD_DIR))
})
})
gulp.task('watchJS', function(){
return watch('src/**/*.js', 'devJS')
})
gulp.task('watchCSS', function(){
return watch(['src/**/*.css', 'src/**/*.scss'], 'buildStyles')
})
gulp.task('watchSrc', gulp.parallel('watchHtml', 'watchJS', 'watchCSS'), function(done)
{
done()
})
タスクを関数に変換する場合
function task1(){
return gulp...
...
}
次に、使用できる2つの便利な方法があります。
GULP.SERIESはタスクを同期的に実行します
gulp.task('default', gulp.series(task1,task2));
GULP.PARALLELはそれらを非同期に実行します
gulp.task('default', gulp.parallel(task1,task2));