我的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.
答案 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文件,它们是单独编译的,而部分文件不会被编译。