sass变量不在导入中共享

时间:2013-11-09 20:29:30

标签: sass gruntjs

我的sass文件有以下设置:

base.scss

@import "colors";
@import "forms";

_colors.scss

$gray: #ccc;

_forms.scss

form {
    background: $gray;
}

当我运行grunt sass来构建css时,我收到以下错误:

Running "sass:dist" (sass) task
Syntax error: Undefined variable: "$gray".
        on line xx of sass/_forms.scss
  Use --trace for backtrace.

2 个答案:

答案 0 :(得分:2)

问题是我的sass grunt任务,我正在处理整个目录而不只是base.scss

以下是具有相同问题的未来人员的修复方法:

您想要观看所有文件以进行更改。

    watch: {
        css: {
            files: './sass/**/*.scss',
            tasks: ['sass']
        }
    }

您只想处理base.scss,因为它包含所有其他_foo.scss个文件(只需查看基本文件即可处理这些文件。

    sass: {
        dist: {
            files: [{
                expand: true,
                cwd: './sass',
                src: ['base.scss'],
                dest: './public/css',
                ext: '.css'
            }]
        }
    },

答案 1 :(得分:0)

如果您使用grunt-sass,则updated忽略" _" sass文件。从自述文件中可以看出:

  

注意:以" _"开头的文件即使它们与globbing模式匹配也会被忽略。这样做是为了匹配预期的Sass partial behaviour

grunt-contrib-sass在版本v0.6.0中引入了相同的内容(请参阅他们的release history)。

在您提出问题后,这两个插件都已更新。

所以,你的grunt任务现在可以保持原来的状态,这将使你有多个" base"文件 - 独立的sass文件,它们是单独编译的,而部分文件不会被编译。