我们正在使用gulp将所有LESS文件编译到Maven项目的目标/中。仅此任务需要大约51秒,因此我们希望加快速度并跳过未更改的LESS文件。我们需要一个文件缓存,因为从Maven调用gulp并且构建在IDE中运行,因此gulp进程不能保留在内存中。
充其量,缓存的CSS文件应该被复制到目标/即使/ target被Clean&删除了。建立。
这是我的代码:
var cache = require('gulp-cache');
var fileCache = new cache.Cache({ cacheDirName: 'gulp-cache' });
gulp.task('less', function () {
return gulp.src([webappPath + '/**/*.less'])
.pipe(fileCache('less'))
.pipe(sourcemaps.init())
.pipe(less({
paths: [path.join(__dirname, 'less', 'includes')],
plugins: [cleancss],
relativeUrls: true
}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(target));
;
});
第.pipe(fileCache('less'))
行遇到错误:
TypeError:fileCache不是函数。
答案 0 :(得分:2)
(1)gulp-cache
插件需要包装您的less
插件。这样,只有已更改的文件才会传递到less
。
(2)您不一定需要实例化自己的cache.Cache
对象。如果不这样做,gulp-cache
将为您创建一个。如果您想拥有多个缓存,则只需自己完成。在这种情况下,您可以使用cache.Cache
选项传递fileCache
对象。
gulp.task('less', function () {
return gulp.src([webappPath + '/**/*.less'])
.pipe(sourcemaps.init())
.pipe(cache(less({
paths: [path.join(__dirname, 'less', 'includes')],
plugins: [cleancss],
relativeUrls: true
}), {
fileCache: new cache.Cache({ cacheDirName: 'gulp-cache' })
}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(target));
});