6

我有几个 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');
});

任何帮助或指示将不胜感激。

4

1 回答 1

0

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

于 2016-09-15T07:28:40.337 回答