2013-01-16 158 views
3

Ahoy grunt-masters!gruntjs加載外部配置

我想外部配置文件加載到咕嚕,這樣我可以做這樣的事情:

$ grunt dev:homepage

,它會在homepage-config.json加載,然後運行watch

$ grunt dev:contact

它會加載在contact-config.json,然後運行watch

每個配置文件將提供任務特定的設置:手錶,jshint,CONCAT,等...

裏面我Gruntfile我有一個名爲dev

grunt.registerTask('dev', 'loads in external -config.json file, then runs watch', function(name) { 

    grunt.initConfig(grunt.file.readJSON(name + '-config.json')); 

    console.log(grunt.config('jshint.pageConfig.src') // correctly logs whatever had been specified in my external json file 

    grunt.task.run('watch'); // correctly boots up watch with configuration specified by external file 

}); 

任務在這一dev任務外部加載配置工作得很好。該console.log將返回您所期望的,並且watch任務將使用外部指定的設置啓動。

我的問題是,一旦watch開始觸發任務,這些任務似乎不再有權訪問此外部加載的配置。在dev任務和watch觸發的任務之間的某個位置,動態加載的配置會被吹掉。

任何人都可以闡明爲什麼會發生這種情況以及我如何實現我的目標?

非常感謝, - 詹姆斯

回答

3

你需要在你的手錶任務配置指定nospawn : true使被叫任務在同一個環境中運行。有關更多信息,請參閱文檔this section