GulpJS:我不希望 gulp-ruby-sass 循环遍历所有 sass 文件
Posted
技术标签:
【中文标题】GulpJS:我不希望 gulp-ruby-sass 循环遍历所有 sass 文件【英文标题】:GulpJS: I don't want gulp-ruby-sass to loop through all sass files 【发布时间】:2014-11-30 13:22:07 【问题描述】:这是我为让 gulp 监视我所有的 SASS 文件而编写的代码,效果很好(我喜欢它),
gulp.task('sass', function ()
gulp.src('../../_dev/_sass/**/*.scss')
.pipe(rubysass(
compass: true
))
.pipe( minifyCSS() )
.pipe( gulp.dest('../../') );
);
由于某种原因,当我告诉 CMD 运行 gulp 并更改 scss 文件时,CMD 会循环执行并更新指定目录中的所有 scss 文件,(我只希望它更新我更改的那个)。
编辑:它实际上循环遍历所有 css 文件,而不是 scss 文件。
我已经搜索过是否有任何东西可以阻止它像那样 globbing,但遗憾的是还没有找到任何东西。如果我正确阅读,documentation 中也没有任何内容。
我假设我将 gulp.src() 声明为设置为监视所有目录的部分可能是发生这种情况的原因。而我已经在我的 LESS 和 CoffeeScript 环境中应用了相同的样式并且没有遇到这个问题。
是否有我遗漏的插件或小细节可以阻止这种情况发生?
【问题讨论】:
【参考方案1】:你可以使用 gulp-changed 来达到这种目的,只传递修改过的文件。您必须将任务的dest
指定为changed
并像以前一样执行:
var changed = require('gulp-changed');
gulp.task('sass', function ()
gulp.src('../../_dev/_sass/**/*.scss')
.pipe(changed('../../'))
.pipe(rubysass( compass: true ))
.pipe(minifyCSS())
.pipe(gulp.dest('../../'));
);
【讨论】:
您好,这似乎没有什么不同。我还写了changed('../../', cwd : process.cwd() )
,它仍然循环遍历所有的 CSS 文件。抱歉,我说过它会遍历我的问题中的所有 scss 文件,但它实际上是在遍历 CSS 文件。这可能与指南针有关吗?我还尝试查看使用 gulp-newer 是否有所不同,但这对我也不起作用。
更喜欢 gulp-changed,它更活跃。是的,它可能是使用compass,它有很多问题,因为它没有使用输出文件的标准link以上是关于GulpJS:我不希望 gulp-ruby-sass 循环遍历所有 sass 文件的主要内容,如果未能解决你的问题,请参考以下文章