【问题标题】:GulpJS: I don't want gulp-ruby-sass to loop through all sass filesGulpJS:我不希望 gulp-ruby-sass 循环遍历所有 sass 文件
【发布时间】: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 环境中应用了相同的样式并且没有遇到这个问题。

是否有我遗漏的插件或小细节可以阻止这种情况发生?

【问题讨论】:

    标签: ruby node.js sass gulp glob


    【解决方案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
    猜你喜欢
    • 2015-01-17
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2016-12-18
    • 1970-01-01
    • 2014-09-12
    • 2016-01-10
    相关资源
    最近更新 更多