1

是否可以通过 grunt.js 读取包含子主题和变量的 JSON 文件并动态生成构建过程?

具体来说,我有一个标准grunt.initConfig(),对于外部themes.json文件中的每个 JSON 对象,我想重复主的整个构建过程,grunt.initConfig() 但我需要通过与每个子主题关联的元将变量(并不总是相同)传递给构建过程.

我花了很多时间来解决它,我开始认为grunt.js无法适应我正在寻找的构建过程。我认为通过在这样的自定义元值中创建镜像层次结构

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: '<json:package.json>',
    _themes: '<json:themes.json>',
    recess : 'foo',
    concat : 'bar',
    mincss : 'baz
}

然后themes.json再次镜像该结构,但像这样调用根配置文件

   {
   "themFoo" : {
      "_meta_val_1" : "x",
      "_meta_val_2" : "y",
      "_meta_val_3" : "z",
      "recess" : "<%= recess %>",
      "concat" : "<%= concat %>",
      "mincss" : "<%= min %>"
    }

我可以得到默认配置并用模板变量填充空白,但它似乎不是那样工作的。

4

1 回答 1

2

Grunt.js 的作者 Ben Alman 非常友好地在这里为任何想要做我上面概述的事情的人解释它:

https://github.com/gruntjs/grunt/issues/568#issuecomment-11335941

本质上,我做错了,没有意识到 JSON 结构在顶层是不可协商的。您可以在顶级函数下嵌套可选和/或多个文件、输出等,但这些顶级 JSON 数据项保留用于本机函数和扩展。

以下是我如何能够完成上述内容的要点: https ://gist.github.com/4294776

于 2012-12-13T15:06:10.373 回答