Для gulp 4 есть таск watch:
let paths = {
scss: 'frontend/scss',
js: 'frontend/js',
site_js: 'web/js/site.js',
fonts: 'frontend/fonts',
images: 'frontend/images',
dest: 'web/assets',
};
gulp.task('watch-scripts', () => {
gulp.watch([
paths.site_js,
paths.js + '/**/*.js',
], gulp.series('scripts'));
});
Для
paths.site_js watch срабатывает только 1 раз после запуска\перезапуска таска. Для
paths.js + '/**/*.js' запускается при каждом изменении подходящих файлов. При этом для правила
'web/js/*.js' запуск watch происходит как надо при каждом изменении файла site.js, но мне нужно чтобы отслеживался только он, а не все что в папке web/js