0

コマンドを使用して grunt にプロパティを設定しようとしていますが、grunt はプロパティ名にgrunt.config(<property>, <value>)あるピリオド.をエスケープせず、新しい json オブジェクトに変換します。プロジェクトのリストをループして、少ないファイルのリストを作成しています。これがコードです。

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

結果を、より少ないキーとこのような css 値を持つ json オブジェクトにしたい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 に答える