Я использовал все пакеты из npm. Больше всего подходит gulp-sync-dir.
У меня такая структура исходников:
src
--img
----logo1.png
----logo2.png
--pug
----index.pug
----about.pug
--scss
----main.scss
----variables.scss
И на выходе:
dist
--img
----logo1.png
----logo2.png
--css
----main.css
--index.html
--about.html
И такие настройки sycnDir таска:
var syncDir = require('gulp-sync-dir');
gulp.task('sync-dir', function () {
syncDir({
src: 'src',
target: 'dist',
exclude: ['*.html', '*.css'],
});
});
И соответственно gulp.watch:
gulp.task('watch', function () {
gulp.watch('src/pug/**/*', ['pug']);
gulp.watch('src/scss/**/*', ['scss']);
gulp.watch('src/img/**/*', ['img', 'sync-dir']);
});
Первая сборка проекта происходит правильно, папки сравниваются и удаляются все ненужные файлы из папок. Но как только включается watch'er, и к примеру из папки
src/img я удаляю картинку
logo2.png, то из папки
dist/img удаляется картинка
logo2.png и всё ок, но ещё при этом удаляется папка
dist/css и файлы
index.html,
about.html.
Как решить проблему?