如果是 pug 编译让您变慢,请添加缓存。
var gulp = require('gulp');
var pug = require('gulp-pug');
var cached = require('gulp-cached');
var remember = require('gulp-remember');
gulp.task('pug', function () {
return gulp.src('pug/**/*.pug', { since: gulp.lastRun('pug') }))
.pipe(cached('pug'))
.pipe(pug({pretty:true, doctype:'HTML'}))
.pipe(remember('pug'))
.pipe(gulp.dest('views'))
})
gulp.task('watch', function(done) {
gulp.watch('pug/**/*.pug', gulp.parallel('pug'));
return done();
});
gulp.task('default', gulp.series('pug', 'watch'));
选项gulp.lastRun 将只返回自上次运行给定任务以来更改的文件。如果您使用default 任务来构建您的文件,pug 将只需要处理已更改的文件。因为 gulp 进程通过 watch 函数保持活动状态,所以它能够缓存所有以前未更改的文件。
REMARK:这只有在你使用 Gulp v4 时才有效,如果不是,你真的应该升级;)
Gulp
有一个包名为gulp-cache,即{ since: gulp.lastRun('pug') }。所以你应该可以调整sn-p:
var gulp = require('gulp');
var pug = require('gulp-pug');
var cache = require('gulp-cache');
var cached = require('gulp-cached');
var remember = require('gulp-remember');
gulp.task('pug', function () {
return gulp.src('pug/**/*.pug'))
.pipe(cache('pug'))
.pipe(cached('pug'))
.pipe(pug({pretty:true, doctype:'HTML'}))
.pipe(remember('pug'))
.pipe(gulp.dest('views'))
})
gulp.task('watch', function(done) {
gulp.watch('pug/**/*.pug', ['pug']);
return done();
});
gulp.task('default', ['pug', 'watch']);
我不确定你是否真的需要gulp-cached 和gulp-remember。这些包将输入文件链接到转换后的输出文件。这意味着gulp-remember 将输出所有已处理的文件。如果文件没有更新,它将输出缓存的版本。如果您不需要所有文件(例如,因为您没有连接它们),您可以删除这些行。
即使包名非常相似,它们也完全不同:
包gulp-cache 只会转发自上次构建以来已更改的文件。它本质上是一样的,然后是选项{ sine: gulp.lastRun('pug') }。
因此,如果您需要在管道中进一步处理文件,则需要所有 3 个包,否则,包 gulp-cache(不带 d)就足够了。