0

我正在尝试使用命令在 grunt 中设置一个属性,grunt.config(<property>, <value>)并且 grunt 不会转义.我的属性名称中的句点,并将其转换为一个新的 json 对象。我正在遍历一个项目列表并创建一个较少文件的列表。这是代码。

grunt.config('projects').forEach(function(project) {
  grunt.config('less.development.files.' + project + '.less', 'project/' + project + '.css');
});

我希望结果是一个 json 对象,它具有较少的键和像这样的 css 值project.less : project.css

这给了我一个看起来像这样的 json 对象

{
  "file1": {
    "less": "project\/file1.css"
  },
  "file2": {
    "less": "project\/file2.css"
  },
  "file3": {
    "less": "project\/file3.css"
  }
}

如果我将文件名从 更改.less_less,那么对象看起来就像我想要的那样。

{
  "file1_less": "project\/file1.css",
  "file2_less": "project\/file2.css",
  "file3_less": "project\/file3.css",
}

但我希望它是.less。我该怎么做才能使 Grunt 不将其创建为新对象?我尝试过双引号、单引号、带转义的单引号,以及将键/值推入变量名并使用变量。这些都不起作用。有没有人有任何其他想法?谢谢您的帮助。

4

1 回答 1

0

这应该有效:

grunt.config('projects').forEach(function(project) {
  grunt.config.data.less.development.files[project + '.less'] = 'project/' + project + '.css';
});

基本上,您希望使用带有 .less 作为键的连接字符串,以便您可以grunt.config.data.less.development.files使用方括号表示法直接通过对象访问它。

假设您已经有一个占位符,例如:

grunt.config.init({
  less:{
    development:{
      files:[]
    }
  }
})
于 2013-10-08T00:04:30.423 回答