grunt contrib sass:如何将子文件夹动态添加到目标中?

grunt contrib sass:如何将子文件夹动态添加到目标中?,sass,grunt-contrib-sass,Sass,Grunt Contrib Sass,我有一个目录结构: 视图 \u静态 some.js somesass.scss something.jade 我希望做这样的事情: sass:{ 地区:{ 选项:{ 样式:“扩展” }, 档案:[{ 是的, cwd:“视图”, src:['*/*.scss'], 扁平化:是的, dest:“视图/*/\u静态”, 分机:'.css' }] } }, 如果我只做了dest:'views'并删除flatten:true,那么它至少会将它放在.scss文件所在的同一个文件夹中,但我不知

我有一个目录结构:

  • 视图
    • \u静态
      • some.js
    • somesass.scss
    • something.jade
我希望做这样的事情:

sass:{
地区:{
选项:{
样式:“扩展”
},
档案:[{
是的,
cwd:“视图”,
src:['*/*.scss'],
扁平化:是的,
dest:“视图/*/\u静态”,
分机:'.css'
}]
}
},

如果我只做了
dest:'views'
并删除
flatten:true
,那么它至少会将它放在.scss文件所在的同一个文件夹中,但我不知道如何说“好,将“
\u static”
”添加到当前文件的cwd中,并将.css放在其中。”我如何用grunt contrib sass做到这一点


如果想知道为什么我不把所有编译好的CSS都放在一个目录中,那是因为这是我自己的实验服务器,所以我没有缩小或做任何事情。

为了把子文件夹放到路径中,我不得不使用
重命名:function(dest,src){..}
,但事情并没有像我想象的那样工作。首先,
flatte
不是我们想要的,因此我们可以通过src访问父目录。另一件需要注意的事情是
src
内部
重命名:
whatever.css
作为文件,即使
src
外部定义为
['*/*.scss']
。这对我们有利,但却让我绊倒了,因为我希望看到
whatever.scss
。我仍然需要回去做一些工作,但这为我完成了工作:


sass:{
地区:{
选项:{
样式:“扩展”
},
档案:[{
是的,
cwd:“视图”,
src:['*/*.scss'],
重命名:函数(dest,src){
//src将具有.css扩展名,而不是scss。
var splitPath=src.split('/');
//在splitPath中保留文件名前面的路径。
var filename=splitPath.pop();
//不应该有任何其他子目录,
//但j.i.c.补充道,直到我能回来。
var joinedPath=splitPath.join(“/”);
var customDest=this.cwd+'/'+joinedPath+'/'静态文件名;
返回customDest;
},
分机:'.css'
}]
}

最终结果是:

  • 视图
    • \u静态
      • some.js
      • somesass.css
        (在运行
        grunt-sass
        后在自定义位置结束)
    • somesass.scss
      (源Sass)
    • something.jade

根据
dest:
是一个路径前缀,因此没有后缀,但是下一个有文档记录的参数
重命名
看起来很有希望。这可能会奏效。谢谢Kenny:)这正是我需要的。我会在稍后为其他可能尝试类似操作的人发布答案。