2013-02-15 62 views
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文件動態讀取?

感謝您的幫助!

回答