我是gruntjs的新手,並且正在嘗試爲JS前端編寫構建。設定如下需求,使得進入構建過程(串聯,縮小)的所有源文件必須在外部文件中定義:在外部文件中定義構建源列表
|-config
|- js.json
|-src
|- js
|- a.js
|- b.js
|- Gruntfile.js
|- package.json
我簡化了項目結構來說明問題。該config/js.json
看起來是這樣的:
[
"<%=js_dir%>/a.js",
"<%=js_dir%>/b.js"
]
Gruntfile.js
看起來是這樣的:
module.exports = function(grunt) {
grunt.initConfig({
concat: {
"options": {"separator": ";"},
"build": {
"src": "<%= grunt.template.process(grunt.file.read('./config/js.json'),{data: {js_dir: './src/js'}})%>"
,
"dest": "build/app.js"
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['concat']);
};
當我運行一個空的輸出文件由,因爲源列表爲空:
...
Reading ./config/js.json...OK
Files: [no src] -> build/app.js
Reading ./config/js.json...OK
Writing out...OK
Writing build/app.js...OK
File "build/app.js" created.
Done, without errors.
爲了驗證我的邏輯,我通過更改src
屬性來拋棄已處理的源列表:
"src": "<%= grunt.file.write('out',grunt.template.process(grunt.file.read('./config/js.json'),{data: {js_dir: './src/js'}}))%>"
的out
文件顯示,模板處理邏輯的內容是有效的:
[
".src/js/a.js",
".src/js/b.js"
]
由於src
財產accepts a hardcoded JSON array of source files我的猜測是,源列表的結合模板完成之前完成。
gruntjs詳細輸出顯示連接之前和之後的讀數config/js.json
,使我困惑。
我試着重寫config/js.json
文件,以便所有的JSON數組都適合一行但無濟於事。
如果可以這樣做,請告訴我如何。如果無法完成,請告訴我爲什麼。
我的環境:
- 咕嚕:咕嚕-CLI v0.1.9,咕嚕v0.4.1
- 的NodeJS:v0.11.6預
- 操作系統:Linux本地主機3.2.0-23泛型#36 -Ubuntu x86_64 GNU/Linux