Как я могу заставить gulp приостановиться, пока папка недоступна? - PullRequest
2 голосов
/ 12 февраля 2020

Я использую gulp, чтобы отслеживать изменения в нескольких папках и синхронизировать c их с набором мест назначения. Но во время процесса сборки одна из моих исходных папок («dist») удаляется и воссоздается, и это нарушает gulp.watch, поэтому мне приходится прерывать и перезапускать процесс.

Я смог чтобы избежать ошибки, добавьте это в начало моей задачи:

gulp.task("home", function() {
    // Added this code
    var fs = require("fs")
    if (!fs.existsSync(sourceFolder)) {
        console.log("Dist folder temporarily unavailable, probably building...")
        return gulp
    }
    // Original task
    return gulp
        .src(sourceFolder)
        .pipe(changed(destFolder))
        .pipe(gulp.dest(destFolder))
})

...

gulp.task("watch", function() {
    gulp.watch(sourceFolder, { interval: 500 }, gulp.series(["home"]))
})

Но теперь, когда процесс сборки завершен и папка dist возвращается, задача не запускается снова , поэтому новые файлы не копируются в место назначения. Я не получаю никаких других ошибок.

Есть идеи? Лучшее, что я могу понять, это то, что, возможно, gulp.watch кэширует дескриптор к sourceFolder, поэтому удаление и повторное создание папки приводит к тому, что она теряет папку и, таким образом, не видит новую папку и файлы.

1 Ответ

0 голосов
/ 07 марта 2020

У меня фактически была похожая проблема ранее утром, и я думаю, что у вас есть два варианта

Вариант 1

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

Затем используйте gulp-plumber , чтобы предотвратить остановки при ошибках (например, когда ваш папка dist отсутствует)

Вариант 2

Обновление до до последней версии gulp . Все немного меняется, но они определенно чище. Там у метода наблюдения gulp нет проблем, описанных выше, и вам не понадобится сантехник, поскольку он не остановит выполнение программы после ошибки.

Это то, что я делал раньше утром, и было действительно просто. Я думаю, это будет зависеть от того, насколько велик ваш gulpfile и сколько у вас времени.

-

Надеюсь, это поможет

Спасибо,

...