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 文件的主要内容,如果未能解决你的问题,请参考以下文章

gulpjs教程

前端构建工具:gulpjs

前端构建工具gulpjs的使用介绍及技巧

前端构建工具gulpjs的使用介绍及技巧

前端构建工具gulpjs

前端构建工具gulpjs的使用介绍及技巧