【问题标题】:grunt-contrib-sass: How do I add a subfolder into the destination dynamically?grunt-contrib-sass:如何动态地将子文件夹添加到目标中?
【发布时间】:2016-02-17 01:15:05
【问题描述】:

我有一个目录结构:

  • 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 文件所在的同一文件夹中,但我不知道怎么说“好的,添加'@ 987654330@' 到当前文件的 cwd 并将 .css 放在那里。”我如何/可以使用 grunt-contrib-sass 做到这一点?

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

【问题讨论】:

  • 根据this dest: 是路径前缀,所以没有后缀,但下一个记录的参数rename 看起来很有希望。
  • 这可能行得通。谢谢肯尼。 :)
  • 正是我需要的。我会稍微为其他可能尝试做类似事情的人发布答案。

标签: sass grunt-contrib-sass


【解决方案1】:

为了让子文件夹进入路径,我必须使用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(源 Sass)
    • something.jade

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2015-10-25
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2015-01-02
    • 2015-02-16
    • 1970-01-01
    相关资源
    最近更新 更多