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

And*_*rew 6 gruntjs

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

grunt.loadNpmTasks('grunt-mysuperlint');
Run Code Online (Sandbox Code Playgroud)

哪里grunt-my-common-lint-tasks是两个jshint和封闭棉短绒真的只是特定的默认配置.

但我认为没有办法将两个现有的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');
});
Run Code Online (Sandbox Code Playgroud)

任何帮助或指示将非常感激.

aki*_*iva 0

虽然这不能直接回答您的问题,但我可以为您的原始问题建议一个简单的技巧:您可以有一个全局 .jshintignore 文件并从每个项目软链接到它。这有点像黑客,但更简单