我的目录结构为:
-
views
-
_static_
-
some.js
-
-
somesass.scss
-
something.jade
-
我希望做这样的事情:
sass: {
dist: {
options: {
style: 'expanded'
},
files: [{
expand: true,
cwd: 'views',
src: ['*/*.scss'],
flatten: true,
dest: 'views/*/_static_',
ext: '.css'
}]
}
},
如果我只是dest: 'views'
并删除flatten:true
那么它至少会将其放在 .scss 文件所在的同一文件夹中,但我不知道如何说"好的,将'_static_
'添加到当前文件的 cwd 并将.css放在那里。我如何/可以用咕噜咕
如果想知道为什么我不把所有编译的CSS扔到一个目录中,那是因为这是为了我自己的实验服务器,所以我没有缩小或任何东西。
为了使子文件夹进入路径,我不得不使用rename: function(dest, src){ .. }
,但事情并没有像我假设的那样工作。首先,flatten
不是想要的,所以我们可以通过 src 访问父目录。需要注意的另一件事是,rename:
内部src
将whatever.css
作为文件,即使外部src
定义为 ['*/*.scss']
.这对我们有利,但绊倒了我,因为我希望看到whatever.scss
。我仍然需要回去做一些工作,但这为我完成了工作:
sass: {
dist: {
options: {
style: 'expanded'
},
files: [{
expand: true,
cwd: 'views',
src: ['*/*.scss'],
rename: function(dest, src) {
// src will have .css extension, not scss.
var splitPath = src.split('/');
// Leaves the path preceding the filename in splitPath.
var filename = splitPath.pop();
// There shouldn't be any other subdirectories,
// but added j.i.c. until I can come back to it.
var joinedPath = splitPath.join("/");
var customDest = this.cwd + '/' + joinedPath + '/_static_/' + filename;
return customDest;
},
ext: '.css'
}]
}
最终结果是:
-
views
-
_static_
-
some.js
-
somesass.css
(运行grunt sass
后最终到达自定义位置(
-
-
somesass.scss
(来源萨斯( -
something.jade
-