tslint 正确的错误/警告处理

Posted

技术标签:

【中文标题】tslint 正确的错误/警告处理【英文标题】:tslint proper error/warning handling 【发布时间】:2017-10-24 21:16:56 【问题描述】:

我们的项目使用 Webpack 和 tslint。

预期:

我希望 tslint 错误产生构建错误,而 tslint 警告只产生控制台警告。

实际:

如果我们在配置中将emitErrors 设置为true,任何 tslint 错误/警告都会产生错误。

如果emitErrorsfalse,任何 tslint 错误/警告都不会产生错误。

如何让它正常工作?

【问题讨论】:

【参考方案1】:

我也有这个特殊的问题。我希望 lint 警告不会导致构建失败,但错误会导致构建失败。

我分叉了 tslint-loader 存储库并添加了几个新选项:

failOnError: bool failOnWarning: bool

所以你可以使用其中一个,或者两者都使用,或者一个都不使用。很有用!

分叉: https://github.com/gunn4r/tslint-loader

【讨论】:

【参考方案2】:

tslint-loader

您描述的症状是tslint-loader引起的,而不是tslint本身引起的。

所有 linting 违规(警告或错误)都会一次性发送到 webpack。换句话说,linting 的结果由单个字符串表示。此字符串作为警告或错误发出。

因此,emitErrors 真正的意思是“将所有违规作为错误发出”。默认设置是“发出所有违规作为警告”。没有选项可以将警告作为警告发出,将错误作为错误发出。

This fork of tslint-loader 演示了如何让它按照你想要的方式运行。如果有任何错误,它将使构建失败,并显示错误。如果只有警告,则构建成功并显示警告。

尝试一下:

"tslint-loader": "github:mikepatrick/tslint-loader",

单独检查

这个限制是我更喜欢在构建过程中单独运行 linting(在 webpack 之外)的部分原因。

例如,如果您执行 yarn lint && yarn build 而不仅仅是 yarn build 之类的操作,则构建将在任何 linting 错误时失败,但如果只有警告则通过。 this answer的后半部分详细介绍了如何使用flow来做到这一点;你可以用 tslint 做同样的事情:

  "scripts": 
    "start": "webpack-dev-server.....",
    "build:prod": "lint && webpack src/index.js dist/bundle.js -p",
    "lint": ".\\node_modules\\.bin\\tslint src\\**\\*.ts*"
  ,

这种方式运行 yarn build:prod 如果有 linting 错误会失败,但如果只有警告则通过。

【讨论】:

以上是关于tslint 正确的错误/警告处理的主要内容,如果未能解决你的问题,请参考以下文章

将 WebStorm TSLint 错误行更改为警告行

VSCode:tslint-language-service 插件将 lint 提示显示为错误而不是警告

React & Redux tslint 警告

TSLint:如何禁用所有样式/可读性规则

TsLint 抱怨调用***异步方法

如何自动修复 vuejs 中的 tslint 错误