Следующая задача Gulpjs отлично работает при редактировании файлов в глобальном совпадении:
// watch task.
gulp.task('watch', ['build'], function () {
gulp.watch(src + '/js/**/*.js', ['scripts']);
gulp.watch(src + '/img//**/*.{jpg,jpeg,png,gif}', ['copy:images']);
gulp.watch(src + '/less/*.less', ['styles']);
gulp.watch(src + '/templates/**/*.{swig,json}', ['html']);
});
// build task.
gulp.task('build', ['clean'], function() {
return gulp.start('copy', 'scripts', 'less', 'htmlmin');
});
Однако это не работает (это не срабатывает) для новых или удаленных файлов. Я что-то упускаю?
РЕДАКТИРОВАТЬ : даже используя плагин grunt-watch, он, кажется, не работает:
gulp.task('scripts', function() {
return streamqueue(
{ objectMode: true },
gulp.src([
vendor + '/jquery/dist/jquery.min.js',
vendor + '/bootstrap/dist/js/bootstrap.min.js'
]),
gulp.src([
src + '/js/**/*.js'
]).pipe(plugins.uglify())
)
.pipe(plugins.concat(pkg.name + '.min.js'))
.pipe(gulp.dest(dest + '/js/'));
});
gulp.task('watch', ['build'], function () {
plugins.watch({glob: src + '/js/**/*.js'}, function () {
gulp.start('scripts');
});
});
РЕДАКТИРОВАТЬ : Решено, это была эта проблема . Глобусы, начинающиеся с ./
(это было значение src
), кажется, не работает банкомат.
javascript
node.js
gulp
Gremo
источник
источник
gulp-watch
, напримерgulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
Ответы:
Редактировать: По-видимому
gulp.watch
, теперь работает с новыми или удаленными файлами. Это не когда вопрос был задан.Остальная часть моего ответа остается в силе:
gulp-watch
обычно это лучшее решение, потому что оно позволяет вам выполнять определенные действия только с файлами, которые были изменены, и в то же времяgulp.watch
позволяет выполнять только полные задачи. Для проекта разумного размера это быстро станет слишком медленным, чтобы быть полезным.Вы ничего не пропускаете.
gulp.watch
не работает с новыми или удаленными файлами. Это простое решение, предназначенное для простых проектов.Чтобы получить файл наблюдение , которое может искать новые файлы, использовать в
gulp-watch
плагин , который является гораздо более мощным. Использование выглядит так:Лично я рекомендую первый вариант. Это позволяет значительно ускорить процессы для каждого файла. Он отлично работает при разработке с livereload, если вы не объединяете файлы.
Вы можете обернуть свои потоки либо используя мою
lazypipe
библиотеку , либо просто используя функцию иstream-combiner
вот так:ОБНОВЛЕНИЕ 15 октября 2014
Как указывает @pkyeck ниже, очевидно, что версия 1.0
gulp-watch
немного изменила формат, поэтому приведенные выше примеры теперь должны быть:и
источник
И то
gulp.watch()
и другоеrequire('gulp-watch')()
сработает для новых / удаленных файлов, однако, нет, если вы используете абсолютные каталоги. В моих тестах я не использовал"./"
для относительных каталогов BTW.Оба не сработают, если будут удалены целые каталоги.
источник
./
их путей - на самом деле это кажется плохой практикой - github.com/floatdrop/gulp-watch/issues/1gulp-watch
работать должным образом запуск новых или удаленных файлов. Незачем!gulp.watch
Является ли это. Удаление всех./
из путей прояснило проблемы. Потрясающие.Если
src
это абсолютный путь (начиная с/
), ваш код не будет обнаруживать новые или удаленные файлы. Однако есть еще способ:Вместо того:
записывать:
и это будет работать!
источник
{ cwd: src }
Намек был моим решением. Большое спасибо!watch
{cwd:'./'}
и оставьте шаблон глобуса таким, каким он сталgulp.watch('src/js/**/*.js', {cwd: './'}, ['scripts']);
Для глобусов должен быть указан отдельный базовый каталог, и это базовое местоположение не должно указываться в самом глобусе.
Если у вас есть
lib/*.js
, он будет смотреть под текущим рабочим каталогом, которыйprocess.cwd()
Gulp использует Gaze для просмотра файлов, и в документации по Gulp API мы видим, что мы можем передать определенные параметры Gaze функции наблюдения:
gulp.watch(glob[, opts], tasks)
Теперь в документе Gaze мы можем найти, что текущим рабочим каталогом (glob base dir) является
cwd
вариант.Что приводит нас к ответу Алекса:
gulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
источник
Я знаю, что это более старый вопрос, но я подумал, что выброшу решение, которое придумал. Ни один из плагинов gulp, которые я обнаружил, не сообщал бы мне о новых или переименованных файлах. Так что я закончил оборачивать монокль в удобную функцию.
Вот пример того, как эта функция используется:
Я должен отметить, что gulpStart - также удобная функция, которую я сделал.
А вот актуальный модуль часов.
Довольно просто, а? Все это можно найти в моем наборе для начинающих: https://github.com/chrisdavies/gulp_starter_kit
источник
utils
перейдите в папку)Важно отметить, что похоже, что gulp.watch сообщает только об измененных и удаленных файлах в Windows, но прослушивает новые и удаленные файлы по умолчанию в OSX:
https://github.com/gulpjs/gulp/issues/675
источник
Вы должны использовать «gulp-watch» для новых / переименованных / удаленных файлов вместо gulp.watch
источник