Grunt:如何将两个多任务组合成另一个多任务插件?

时间:2013-10-15 21:31:24

标签: gruntjs

我有几个npm模块,我想使用常见的linting配置。我有jshint和关闭linter通过Grunt在一个项目上工作。但是复制/粘贴每个项目的.jshintignore文件和.jshintrc文件将变得难以处理,尤其是在需要更改某些内容时。理想情况下,我希望有一个单独的grunt任务封装了通用配置,可以通过

加载
grunt.loadNpmTasks('grunt-mysuperlint');

其中grunt-my-common-lint-tasks实际上只是jshint和闭包linter的特定默认配置。

但我认为没有办法将两个现有的grunt插件组合成一个唯一真正的组合是选项和目标合并的插件。

这可能吗?

我应该做点什么:

grunt.registerMultiTask('mysuperlint', function() {
    // Manual options merging?
    var opts = this.options({
        jshint: { src: 'scripts/**/*.js', options: { ... } },
        closureLinter: { src: 'scripts/**/*.js', options: { ... } }
    });
    grunt.config.set('jshint.dev', opts.jshint);
    grunt.config.set('closureLinter.dev', opts.closureLinter);
    grunt.task.run('jshint:dev');
    grunt.task.run('closureLinter:dev');
});

任何帮助或指示都会非常感激。

1 个答案:

答案 0 :(得分:0)

虽然这不能直接回答你的问题,但我可以为你的原始问题提出一个简单的技巧: 您可以从每个项目中获得一个全局.jshintignore文件和软链接。 这有点像黑客,但它的方式更简单