jshint-loader

[![npm][npm]][npm-url] [![node][node]][node-url] [![deps][deps]][deps-url] [![tests][tests]][tests-url] [![chat][chat]][chat-url]

处理 JSHint 模块的 webpack loader。 在构建时(build-time),对 bundle 中的 JavaScript 文件,执行 JSHint 检查。

要求

此模块需要 Node v6.9.0+ 和 webpack v4.0.0+。

起步

你需要预先安装 jshint-loader

  1. $ npm install jshint-loader --save-dev

然后,在 webpack 配置中添加 loader。例如:

  1. // webpack.config.js
  2. module.exports = {
  3. module: {
  4. rules: [
  5. {
  6. test: /.js/,
  7. enforce: 'pre',
  8. exclude: /node_modules/,
  9. use: [
  10. {
  11. loader: `jshint-loader`,
  12. options: {...options}
  13. }
  14. ]
  15. }
  16. ]
  17. }
  18. }

然后,通过你偏爱的方式去运行 webpack

选项

除了下面列出的自定义 loader 选项外, 所有有效的 JSHint 选项在此对象中都有效:

delete options.; delete options.; delete options.;

emitErrors

类型:Boolean 默认值:undefined

命令 loader,将所有 JSHint 警告和错误,都作为 webpack 错误触发。

failOnHint

类型:Boolean 默认值:undefined

命令 loader,在所有 JSHint 发生警告和错误时, 都产生 webpack 构建失败。

reporter

类型:Function 默认值:undefined

此函数用于对 JSHint 输出进行格式化,也可以发出警告和错误。

自定义报告函数(custom reporter)

默认情况下,jshint-loader 自带一个默认报告函数。

然而,如果你想设置自定义的报告函数, 向 jshint 选项的 reporter 属性传递一个函数(查看上面用法)

报告函数执行时,会传入一个 JSHint 产生的, 由错误/警告构成的数组,结构如下:

  1. [
  2. {
  3. id: [字符串,通常是 '(error)'],
  4. code: [字符串,错误/警告编码(error/warning code)],
  5. reason: [字符串,错误/警告消息(error/warning message)],
  6. evidence: [字符串,产生此错误的那段代码]
  7. line: [数字]
  8. character: [数字]
  9. scope: [字符串,消息作用域;
  10. 通常是 '(main)' 除非代码被解析过(eval)]
  11. [+ 还有一些旧有字段,不必关心。]
  12. },
  13. // ...
  14. // 更多的错误/警告
  15. ]

报告函数执行时,loader context 会作为函数中的 this。 你可以使用 this.emitWarning(...)this.emitError(...) 来发出消息。 查看 webpack 文档中关于 loader context 的部分

注意:JSHint reporter 并不兼容 JSHint-loader! 这是因为,事实上 reporter 的输入, 只能处理一个文件,而不能处理多个文件。 以这种方式报告的错误,不同于用于 JSHint 的 传统 reporter 报告的错误, 这是因为,会对每个资源文件执行 loader plugin(也就是 JSHint-loader), 因此 reporter 函数也会被每个文件执行。

webpack CLI 中的输出通常是:

  1. ...
  2. WARNING in ./path/to/file.js
  3. <reporter output>
  4. ...

`

贡献

如果你从未阅读过我们的贡献指南,请在上面花点时间。

贡献指南 贡献指南” class=”icon-link” href=”#贡献指南”>

License

MIT MIT” class=”icon-link” href=”#mit”>