tslint正确的错误/警告处理

时间:2017-05-24 13:31:29

标签: webpack tslint

我们的项目使用Webpack和tslint。

预期:

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

实际:

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

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

如何使其正常工作?

2 个答案:

答案 0 :(得分:2)

我也有这个特殊问题。我想让棉绒警告不是导致构建失败,而是导致构建失败的错误。

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

  • failOnError:布尔
  • failOnWarning:bool

因此,您可以使用一个或两个,或者不使用。非常有用!

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

答案 1 :(得分:1)

<强> tslint装载机

您描述的症状是由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*"
  },

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