【发布时间】:2014-07-22 10:01:42
【问题描述】:
我有一个项目使用带有 grunt-contrib-sass、grunt-contrib-watch 和 grunt-newer 的 GruntJS。
我的主 app.scss 文件使用 @import 指令导入一些 .scss 文件,例如
@import "common/vars.scss";
如果我在主 app.scss 中进行更改,一切正常。问题是当我对正在导入的文件(如 vars.scss)进行更改时,app.scss 没有得到更新。
这是我的监视任务:
watch: {
css: {
files: ['scss/**/*.scss'],
tasks: ['newer:sass'],
options: {
spawn: false,
}
}
}
这就是 sass 任务本身:
sass: {
dist: {
options: {
style: 'compressed',
noCache: true
},
/* looks for every .scss file in the scss folder (checks nested folders too),
* compile it and create another file wit the same name in the style folder */
files: [{
expand: true,
cwd: 'scss',
src: ['**/*.scss'],
dest: 'style',
rename: function (dest, src) {
var folder = src.substring(0, src.lastIndexOf('/'));
var filename = src.substring(src.lastIndexOf('/'), src.length);
filename = filename.substring(0, filename.lastIndexOf('.'));
return dest + '/' + folder + filename + '.css';
}
}]
}
}
知道如何更改 Gruntfile.js 以涵盖这种情况吗? :) 谢谢。
【问题讨论】:
-
我不确定这是否可行,但我注意到 watch 的 'files' 成员和 sass 的 files:src 成员都是数组。也许你可以添加一个模式来匹配那里的其他文件?
标签: sass gruntjs grunt-contrib-watch