3
我想創建一些任務,我可以從不同的json文件讀取自定義配置,並用json文件的內容替換我的coffee-source文件中的內容,並連接源文件。grunt任務與自定義json配置
我PROJEKT-設置:
./src
- file1.coffee
- file2.coffee
./config中
/folder1中
- development.json(包含:{ 「鍵」: 「VALUE1」}
- production.json(包含:{ 「鍵」: 「VALUE2」}
/文件夾2
- development.json(包含:{ 「鍵」: 「值3」}
- production.json(包含:{ 「鍵」:「v alue4" }
./dist
- package-name.coffee
- 包name.js
file1.coffee包含
myVar = '@@putkeyhere'
version = '@@version'
...
我有繁重的concat任務運行本身的配置和工作:
concat: {
dist: {
src: ['<banner>', './src/*.coffee'],
dest: './dist/<%= pkg.name %>.coffee'
}
},
我已經拿到了咕嚕替換任務(更換版本等已經工作當我運行「咕嚕替換」在已經連接起來的文件)
replace: {
dist: {
options: {
variables: {
'created': '<%= grunt.template.today("dd.mm.yyyy HH:MM:ss") %>',
'environment': 'dev',
'version': '<%= pkg.version %>'
},
prefix: '@@'
},
files: {
'dist/': ['./dist/<%= pkg.name %>.coffee']
}
}
},
終於咖啡編譯任務:
coffee: {
compile: {
files: {
'./dist/<%= pkg.name %>.js': ['./dist/*.coffee']
}
}
}
所有的任務都可以爲自己工作,但是我需要從config-json文件中讀取內容到連接的咖啡文件中,然後將所有文件編譯爲js。
我想這樣的事情,但是,這並不覺得不對勁:
grunt.registerTask('mytask', '', function (env) {
env = env || 'development';
if (env !== 'development' && env !== 'production') {
grunt.log.error("'" + env + "' is not valid environment");
return false;
}
var c = grunt.option('c');
if(c) {
// if i run the task "grunt mytask:production -c folder2 it should read
// ./config/folder2/development.json
// that works that way, but i dont think this is a good solution
var config = grunt.file.readJSON('./config/' + c + '/' + env + '.json')
} else {
// here i need to iterate for all folders in ./config, and do stuff for all
}
});
是多任務的選項?但是如何從config.json文件動態讀取?
感謝您的幫助!