Запустите Gulp Watch для JS и обнаружите, что текущая папка изменилась

Мне нужно свести к минимуму количество команд gulp из моего gulpfile.

Это мои папки JS

js/
   templates/
              t-01/
              t-02/
              [...]
              t-xxx/

Моя задача gulp для JS (с livereload)

gulp.task('da-js', function() {
    gulp.src([
        'js/templates/**/*.js',
        '!js/templates/**/*.min.js'
        ])
        .pipe(concat('app.min.js'))
        .pipe(gulp.dest('js/templates'))
        .pipe(livereload());
});

Эта задача является глобальной, папка назначения — templates, но я хочу определить текущую папку файлов js, например:

  1. Я меняю js в /templates/t-01/
  2. gulp.watch запускается
  3. app.min.js генерируется только в этой папке t-01

Я знаю, что gulp.dest не подходит для текущей папки, но я не знаю, как это сделать.

Спасибо за помощь :)


person sponge bob    schedule 10.12.2015    source источник
comment
Отслеживаете ли вы все файлы в папке templates на наличие обновлений, чтобы любые изменения в любом файле JS в этой папке снова генерировали ваш app.min.js?   -  person Arkantos    schedule 10.12.2015


Ответы (1)


Вы можете использовать метод gulp watch для мониторинга папки с JS-файлами на наличие обновлений и выполнения ряда задач в ответ на некоторые изменения.

gulp.task('watch-files', function() {
    gulp.watch('js/templates/**/*.js', ['da-js']);
}); 

Здесь мы наблюдаем за всеми файлами JS в шаблонах и во всех их подпапках и запускаем вашу задачу конкатенации файлов (da-js) для каждого обновления. Теперь, когда мы выполняем ту же задачу, ваша папка app.min.js будет создана в вашей папке templates, даже если вы измените templates/t-01/some.js.

С задачей watch-files, определенной в вашем gulpfile.js, вы можете просто запустить команду gulp watch-files, которая начнет отслеживать ваши файлы.

person Arkantos    schedule 10.12.2015