是否可以读取与每个主题相关的子主题和变量的JSON文件,并通过grunt.js动态生成构建过程?
具体来说,我有一个标准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
内部再次镜像该结构,但是像这样调用root配置文件
{
"themFoo" : {
"_meta_val_1" : "x",
"_meta_val_2" : "y",
"_meta_val_3" : "z",
"recess" : "<%= recess %>",
"concat" : "<%= concat %>",
"mincss" : "<%= min %>"
}
我可以获得默认配置,只需用模板变量填充空白,但它似乎不会那样工作。
答案 0 :(得分:2)
Grunt.js的作者Ben Alman很乐意在这里为那些想要做我上面概述的人解释:
https://github.com/gruntjs/grunt/issues/568#issuecomment-11335941
基本上,我错误地解决了这个问题,没有意识到JSON结构在顶层是不可协商的。您可以在顶层函数下嵌套可选和/或多个文件,输出等,但这些顶级JSON数据项保留用于本机函数和扩展。
以下是我如何完成上述内容的要点: https://gist.github.com/4294776