考虑以下文件系统:
哈巴狗
test1.pug
test2.pug
部分
partial1.pug
使用gulp任务
gulp.task('pug', () => {
return gulp.src('pug/*.pug')
.pipe(pug())
.pipe(gulp.dest('dist'))
});
即使我们仅编辑 test1.pug ,也会编译 test1.pug 和 test2.pug 。如果要将任务更改为
gulp.task('pug', () => {
return gulp.src('pug/*.pug', {since: gulp.lastRun('pug')})
.pipe(pug())
.pipe(gulp.dest('dist'))
});
因为第二个哈巴狗'通过 gulp-watch 运行,更改或仅传递新文件。但是,如果将partial1.pug
添加到test1.pug
,该怎么办? (假设gulp.watch
观察所有文件。)
test1.pug
doctype html
html
head
title Test 1
body
h1 Test 1
include partials/partial1.pug
如果我们编辑 test1.pug ,当然会编译它。但是,如果我们修改 partial1.pug ,则{since: gulp.lastRun('pug')}
将不会传递test1.pug。
我不知道如何解决这个问题,但我想,我们需要在文件或已编译的html中过滤组装好的pug但在输出之前。如果有可能......
也许我没有清楚地解释所需的结果。我们需要:
让我再说一遍 partial1.pug 包含在 test1.pug 中,但不包括 test2.pug 。
答案 0 :(得分:1)
在此阶段无法查看src
模式之外的依赖关系。它们稍后在管道中添加(pug()
)。
为了支持您的用例,Gulp需要有一种方法来收集下游变换器的依赖关系。目前,这超出了Gulp的范围(这是一种复杂的行为,有许多可能的设计选择)。
解决您问题的最佳方法是手动更新src
模式以匹配整个依赖关系树。在你的情况下,它将是pub/**/*.pug
。 (野天星**
允许您匹配任何子目录中的文件。)
你也可以看一下实现your own watcher以获得更好的控制(我担心上面的模式可能会为你的部分发出HTML)。