为了加快调试/编码工作流程,我只希望编译已更改的.less文件。
我的任务是:
gulp.src('core/**/*.less')
.pipe(changed('core'))
.pipe(less().on('error', handleError))
.pipe(autoprefixer('last 2 version'))
.pipe(remember())
.pipe(concat('main.min.css'))
.pipe(gulp.dest('core'))
.on('end', resolve)
.on('error', reject);我使用了gulp-changed,因为它一开始不起作用,所以我也尝试使用gulp-remember,但是没有效果。手表工作,它编译的超级快,但它没有任何影响。
如果我删除了changed('core')和remember(),它可以工作,但速度更慢(大约16秒)。
发布于 2016-05-09 16:13:48
gulp-changed不适合您的用例,因为它用于比较输入文件和磁盘上的输出文件。
假设您有一个输入文件core/foo/bar.less,您可以通过changed('dist')进行管道传输。这样做的目的是查找输出文件dist/foo/bar.less。如果输入文件比输出文件更新,则会传递它。否则它会被过滤掉。
这意味着使用changed('core')不可能工作。它将输入文件core/foo/bar.less与输出文件core/foo/bar.less进行比较。,但它们是相同的文件。这意味着输入文件可以永远不会比输出文件更新,也不会被传递出去。
还有另一个问题。每个输入文件没有一个输出文件。所有的.less文件都被编译成one main.min.css文件。虽然您可以使用自定义比较器来完成这项工作,但它并不是一成不变的。
你真正想要的是gulp-cached。它不是将每个输入文件与磁盘上的输出文件进行比较,而是将每个输入文件与已缓存在内存中的同一文件的先前版本进行比较。
var cached = require('gulp-cached');
gulp.task('css', function() {
return gulp.src('core/**/*.less')
.pipe(cached('less'))
.pipe(less())
.pipe(autoprefixer('last 2 version'))
.pipe(remember('less'))
.pipe(concat('main.min.css'))
.pipe(gulp.dest('core'));
});https://stackoverflow.com/questions/37113942
复制相似问题