在一个咕噜插件,我如何得到一个数组的全局和目标指定选项的组合?

我正在写一个具有可以是数组值的选项的grunt插件。 这些值具体是文件(不同于任务本身的文件属性中指定的文件)。 我的任务设置可能如下所示:

grunt.initConfig({ assemble: { options: { data: ['test/common/data/common1.json', 'test/common/data/common2.json'] }, dev: { options: { data: ['test/dev/data/dev.json'] }, files: { 'test/actual': ['test/files/dev.hbs'] } }, prod: { options: { data: ['test/prod/data/prod.json'] }, files: { 'test/actual': ['test/files/prod.hbs'] } }, } }); 

在我的插件中,我希望能够获得全局选项和目标选项中指定的所有文件列表的数据选项。

对于开发目标grunt assemble:dev我会看到这this.options.data

 ['test/common/data/common1.json', 'test/common/data/common2.json', 'test/dev/data/dev.json'] 

对于prod目标grunt assemble:prod我会在this.options.data看到这this.options.data

 ['test/common/data/common1.json', 'test/common/data/common2.json', 'test/prod/data/prod.json'] 

我find了解决这个问题的方法,但是我不确定这是否是最好的select。

在我的插件中,我可以通过grunt.config方法访问global和target特定的选项。

 var globalDataFiles = grunt.config(['assemble', 'options', 'data']) || []; var targetDataFiles = grunt.config(['assemble', this.target, 'options', 'data']) || []; 

使用lodash … var _ = require('lodash');

我可以结合数组:

 var data = _.union(globalDataFiles, targetDataFiles); 

我在插件中做了一些更多的工作,但这就是我最初解决这个问题的方法。

请看https://github.com/assemble/assemble/blob/master/tasks/assemble.js查看所有的代码。