【发布时间】:2020-05-28 04:05:02
【问题描述】:
我正在使用 gulp 监视多个文件夹中的更改并将它们同步到一组目标。但是在构建过程中,我的一个源文件夹(“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 的句柄,因此删除并重新创建文件夹会使其失去对文件夹的跟踪,因此它看不到新的文件夹和文件。
【问题讨论】:
-
需要删除
dist吗?您的构建任务能否不单独留下dist,只删除其中的文件? -
更多关于“构建”期间发生的事情的信息会很有用。
-
我正在使用 VueJS CLI 构建一个 Web 应用程序,它通过删除和替换文件夹来干净地构建到
dist文件夹中。我设置了两个任务,一个监视该文件夹中的文件并执行一个操作,另一个任务(都类似于上面的代码)监视dist的子文件夹。但是我想要一个干净的构建——我不希望旧的工件坐在那里并继续同步到我的目标文件夹。
标签: vue.js gulp vue-cli gulp-watch