2

我的 sass 文件有以下设置:

基础.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.
4

2 回答 2

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'
            }]
        }
    },
于 2013-11-10T06:08:35.547 回答
0

如果您使用的是grunt-sass,它已更新为忽略“_” sass 文件。从它的自述文件中:

注意:以“_”开头的文件即使匹配通配模式也会被忽略。这样做是为了匹配预期的Sass 部分行为

grunt-contrib-sass在 v0.6.0 版本中引入了相同的内容(参见他们的发布历史)。

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

因此,您的 grunt 任务现在可以保持原来的状态,这将使您能够拥有多个“基本”文件 - 独立的 sass 文件,它们分别编译,而不会编译部分文件。

于 2014-12-03T13:06:40.423 回答