grunt sass:只编译已更改的文件

时间:2018-03-14 10:09:10

标签: javascript node.js sass gruntjs grunt-contrib-watch

我有以下文件夹结构:

+ web
  + component
    - component.js
    - component.scss
    - component.css
  + another
    - another.js
    - another.scss
    - another.css

如您所见,我将每个css编译到他的组件文件夹中。

这是我的配置:

grunt.initConfig({ 
    sass: {
        dist: {
            files: [{
            expand: true,
            cwd: './',
            src: ['web/**/*.scss'],
            dest: './',
            ext: '.css'
            }]
        }
    },
    watch: {
        files: ["web/**/*.scss"],
        tasks: ['sass'],
        options : { spawn: false }
    }
});

一切正常,但问题是每次更改scss文件时,它都会编译我的web文件夹中的所有scss。

我想仅编译已更改的scss

我还尝试安装grunt-newer并更改手表配置:

watch: {
    files: ["web/**/*.scss"],
    tasks: ['newer:sass'],
    options : { spawn: false }
}

但它现在没有编译任何东西。

ps:我想避免映射sass配置中的每个文件(scss - > css),因为所有文件(同名,同一文件夹)的规则相同,因为我有大量的文件

1 个答案:

答案 0 :(得分:0)

好吧,我很接近..我也会发布答案,这可能对某人有帮助。

我必须删除options : { spawn: false },所以我的配置文件现在是这样的:

grunt.initConfig({ 
    sass: {
        dist: {
            files: [{
            expand: true,
            cwd: './',
            src: ['web/**/*.scss'],
            dest: './',
            ext: '.css'
            }]
        }
    },
    watch: {
        files: ["web/**/*.scss"],
        tasks: ['newer:sass']
    }
});