2013-08-30 20 views
0

我想用命令grunt.config(<property>, <value>)設置grunt中的屬性,並且grunt不會跳過屬於我屬性名稱的句點.,並將其轉換爲新的json對象。我正在循環瀏覽項目列表並創建少量文件列表。這是代碼。在grunt中設置一個屬性是創建一個不想要的json對象

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

我想要的結果是一個不太鍵這樣project.less : project.css一個CSS值JSON對象。

這給了我一個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不將它創建爲新對象?我已經嘗試了雙引號,單引號,帶有轉義的單引號,並將鍵/值推入變量名稱並使用變量。這些都沒有奏效。有沒有人有任何其他想法?謝謝您的幫助。

+0

這是什麼配置的最終目標?有沒有更簡單的方法去解決它? – Ben

回答

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:[] 
    } 
    } 
}) 
相關問題