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



我的目录结构为:

  • 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:内部srcwhatever.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

相关内容

  • 没有找到相关文章

最新更新