【问题标题】:How can I force JSHint running in grunt to always use the --verbose flag如何强制在 grunt 中运行的 JSHint 始终使用 --verbose 标志
【发布时间】:2014-11-26 11:39:35
【问题描述】:

我有一个特定的 JSHint/Grunt 设置,我想在其中完成以下任务:

  1. 从单个 .jshintrc 文件加载以允许我的 IDE linter 获取我的设置
  2. 能够在其他 grunt 任务中覆盖 .jshintrc 中的单个选项
  3. 让 JSHint 始终以详细模式运行,以便我始终可以看到警告编号,而无需使用 --verbose 运行所有 grunt

以下允许我从 .jshintrc 加载并始终以详细方式运行,但不允许选项覆盖。文档提到应该是这种情况,但不要说详细选项,它有效:

jshint: {
    options:{
        jshintrc: '.jshintrc',
        verbose: true,
    },
    source: {
        options: {
            ignores: ['src/**/*.test.js'],
        },
        files:{
            src:['src/**/*.js']
        }
    },
    tests: {
        options: {
            unused: false
        },
        files: {
             src: ['src/**/*.test.js']
        }
    }
}

要绕过覆盖限制,只需让 grunt 将 .jshintrc 文件的内容注入到配置中是相当容易的,但无论出于何种原因,这都会导致 linter 现在抛出“line 0 col 0 Bad option: ' verbose'. (E001)" 错误(如果我删除 options.verbose = true; 行,但没有详细标志,这将正确运行):

jshint: {
    options:(function () {
        var options = grunt.file.readJSON('.jshintrc');
        options.verbose = true;
        return options;
    }()),
    source: {
        options: {
            ignores: ['src/**/*.test.js'],
        },
        files:{
            src:['src/**/*.js']
        }
    },
    tests: {
        options: (function () {
            var options = grunt.file.readJSON('.jshintrc');
            options.unused = false;
            return options;
        }()),
        files: {
            src: ['src/**/*.test.js']
        }
    }
}

那么,鉴于我的三个标准,有没有办法配置 grunt 以这种方式运行?

【问题讨论】:

  • 对于任何寻找此问题的答案的人,我已将其作为错误提交到 github.com/gruntjs/grunt-contrib-jshint/issues/178 - 可以在那里找到详细信息,如果情况发生变化,我会更新此问题。
  • 对此有任何更新,特别是如何获得详细模式?检查了链接,但它已关闭。
  • grunt contrib jshint 似乎认为他们不对发送给 grunt 的参数负责,也不会处理(因此关闭了问题。)。我已经搬到了 eslint,它有我需要的所有选项:npmjs.com/package/grunt-eslint

标签: javascript gruntjs jshint


【解决方案1】:

如何使用 grunt-contrib-jshint 在特定文件上运行 jshint:

./node_modules/grunt-contrib-jshint/node_modules/jshint/bin/jshint --verbose app/sources/modules/dashboard/views/dashboard-performance/dashboard-performance-ctrl.js

无法在选项中为 grunt jshint 定义详细模式。直到 grunt 更新才能解决。 (感谢 MaxPRafferty)

【讨论】:

  • 感谢 Oleksander 的回答,但 Grunt 实际上允许在选项中传递“详细”标志。这就是 options 属性的目的,通过 config 传递命令行选项,这就是我的第一个示例有效的原因。
  • 问题在于 grunt-contrib-jshint,他们忽略了 options 属性是为此目的而保留的,并使用它来配置节点环境中的工具,但不要忽略它们本身没有的属性使用。这会导致 linter 在有效的命令行标志上抛出错误,因此 Bad option: 'verbose'. (E001),尽管详细标志在运行时正确附加到 jsHint 命令(具有讽刺意味的是,“错误选项”错误显示在详细模式!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 2011-10-02
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
相关资源
最近更新 更多