在grunt中设置一个属性就是创建一个不需要的json对象

Setting a property in grunt is creating an unwanted json object

本文关键字:一个 不需要 创建 json 对象 grunt 属性 设置      更新时间:2023-09-26

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

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

我希望结果是一个json对象,具有较少的键和类似于project.less : project.css的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不将其创建为新对象?我尝试过双引号、单引号、带转义的单引号,以及将键/值推入变量名并使用变量。这些都不起作用。有人有其他想法吗?谢谢你的帮助。

这应该有效:

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:[]
    }
  }
})
相关文章: