У меня есть следующая задача gulp:
gulp.task('build-files, function(cb) {
runSequence('run-build-cmd',
'delete-dest', 'copy-files',
cb);
});
Эта задача выполняется всякий раз, когда что-либо изменяется в исходной папке следующим образом:
gulp.watch(pathToSrcFolder, ['build-files']);
Так что эта задача запускает 3 других gulpзадач в указанном порядке, первая выполняет команду сборки, вторая удаляет папку следующим образом:
gulp.task('delete-dest', (cb) => {
del([pathToDestFolder], {force: true});
cb();
});
, а третья копирует файлы из источника в два места назначения:
gulp.task('copy-files', () => {
return gulp.src(pathToSrcFolder)
.pipe(gulp.dest(pathToDestFolder))
.pipe(gulp.dest(anotherPath));
});
Обратите внимание, что pathToDestFolder является одной и той же папкой в командах delete-source
и copy-files
.
Проблема, с которой я столкнулся при выполнении этой последовательности, заключается в следующем:
internal/streams/legacy.js:59
throw er; // Unhandled stream error in pipe.
^
Error: ENOENT: no such file or directory, chmod 'pathToDestFolder\path\to\some\file\file.ext'
Я не знаю, почему я получаю эту ошибку.
И когда я запускаю приглашение gulp delete-dest
в cmd (которое очистит pathToDestFolder), а затем gulp copy-files
(которое скопируетисходная папка на две папки pathToDestFolder и anotherPath) работает как положено.
Итак, я думаю, runSequence
не работает должным образом?если да, как я могу решить эту проблему?
Редактировать:
Я пытался использовать rimraf
вместо del
, и все, кажется, работает просто отлично, я знаю, что rimraf
ограничен, и вместо него лучше использовать del
, но почему del
в этом случае приводит к исключению?
Редактировать 2:
Вместо использования rimraf
в качестве решения, Я пробовал это решение:
gulp.task('delete-dest', (cb) => {
del([pathToDestFolder], {force: true})
.then(paths => {cb();});
});
И оно работало как волшебство.
Почему это работало вместо этого?Я не знаю !
Если кто-то может прояснить ситуацию, я был бы очень благодарен.