0

我有一个目录结构:

  • 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。” 我如何/可以用 grunt-contrib-sass 做到这一点?

如果想知道为什么我不只是将所有已编译的 CSS 放到一个目录中,那是因为这是给我自己的实验服务器,所以我没有缩小或任何东西。

4

1 回答 1

0

为了让子文件夹进入我必须使用的路径rename: function(dest, src){ .. },但事情并没有像我想象的那样工作。首先,flatten这不是我们想要的,所以我们可以通过 src 获取父目录。另一件需要注意的是,即使src外部rename:被定义为. 这对我们有利,但因为我希望看到. 我仍然需要回去做一些工作,但这为我完成了工作:whatever.csssrc['*/*.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
于 2016-02-16T17:15:05.887 回答