gruntjs加载外部配置

时间:2013-01-16 13:22:40

标签: gruntjs

啊,哇哇大师!

我想将外部配置文件加载到grunt中,以便我可以执行以下操作:

$ grunt dev:homepage

它将加载到homepage-config.json,然后运行watch

$ grunt dev:contact

它将加载到contact-config.json,然后运行watch

每个配置文件都会为任务提供特定的设置: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触发的任务之间,动态加载的配置会被吹走。

任何人都可以阐明为什么会这样,以及我如何实现目标?

非常感谢, -James

1 个答案:

答案 0 :(得分:3)

您需要在监视任务配置中指定nospawn : true,以便被调用的任务在相同的上下文中运行。有关详细信息/示例,请参阅文档的this section