首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >吞咽-改变与吞咽-不起作用

吞咽-改变与吞咽-不起作用
EN

Stack Overflow用户
提问于 2016-05-09 10:53:28
回答 1查看 323关注 0票数 0

为了加快调试/编码工作流程,我只希望编译已更改的.less文件。

我的任务是:

代码语言:javascript
复制
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秒)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。它不是将每个输入文件与磁盘上的输出文件进行比较,而是将每个输入文件与已缓存在内存中的同一文件的先前版本进行比较。

代码语言:javascript
复制
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'));
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37113942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档