Javascript 使用翡翠的特征,改变吞咽?
当我对Javascript 使用翡翠的特征,改变吞咽?,javascript,node.js,gulp,pug,Javascript,Node.js,Gulp,Pug,当我对.jade文件进行更改时,我只想对该文件而不是所有文件运行Gulp任务。为此,我使用了gulpchanged。它工作正常,直到我对影响全局布局的文件进行更改,例如\u header.jade,\u layout.jade。当我对这些文件进行更改时,什么都不会发生。我所有的布局文件在标题前都有。。我如何解决这个问题 这是我的gulpfile一些行 gulp.task('jade', function() { return gulp.src('dev/templates/**/!(_)*.ja
.jade
文件进行更改时,我只想对该文件而不是所有文件运行Gulp
任务。为此,我使用了gulpchanged
。它工作正常,直到我对影响全局布局的文件进行更改,例如\u header.jade
,\u layout.jade
。当我对这些文件进行更改时,什么都不会发生。我所有的布局文件在标题前都有。
。我如何解决这个问题
这是我的gulpfile一些行
gulp.task('jade', function() {
return gulp.src('dev/templates/**/!(_)*.jade')
.pipe(plumber({
errorHandler: onError
}))
.pipe(changed('public', {extension: '.html'}))
.pipe(jade({
pretty: true,
}))
.pipe(gulp.dest('public'))
.pipe(browserSync.reload({
stream: true
}));
});
gulp.task('watch', function() {
gulp.watch('dev/templates/**/*.jade', gulp.series('jade'));
});
我要做的第一件事是将jade编译任务重构成一个单独的函数。这允许您参数化jade编译,以便可以在您选择的一个或多个文件上运行它:
function compileJade(files) {
return gulp.src(files, {base:'dev/templates'})
.pipe(plumber({
errorHandler: onError
}))
.pipe(jade({
pretty: true,
}))
.pipe(gulp.dest('public'))
.pipe(browserSync.reload({
stream: true
}));
}
您现有的jade
任务现在只需调用该函数:
gulp.task('jade', function() {
return compileJade('dev/templates/**/!(_)*.jade');
});
如果更改的文件是部分文件(以开头)
,我们需要能够确定哪些其他文件受到该更改的影响。这是由图书馆推动的:
最后,每当文件发生更改时,我们仅对受影响的文件调用compileJade
函数:
gulp.task('watch', function() {
gulp.watch('dev/templates/**/*.jade').on('change', function(changedFile) {
return compileJade(isPartial(changedFile) ? findAffectedFiles(changedFile) : changedFile);
});
});
gulp.task('watch', function() {
gulp.watch('dev/templates/**/*.jade').on('change', function(changedFile) {
return compileJade(isPartial(changedFile) ? findAffectedFiles(changedFile) : changedFile);
});
});