TypeScript 编译器不遵循 ESLint 规则



我遇到了一个问题,即TypeScript编译器生成的JavaScript不遵循为项目设置的ESLint规则。

以下是 TypeScript 配置 (tsconfig.json(:

{
"compilerOptions": {
"lib": ["es2015"],
"module": "commonjs",
"outDir": "dist",
"sourceMap": true,
"strict": true,
"target": "es2015"
},
"include": [
"src"
]
}

以下是 ESLint 配置 (.eslintrc.json(:

{
"env": {
"browser": true,
"commonjs": true,
"es6": true,
"node": true
},
"extends": [
"standard",
"plugin:@typescript-eslint/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 11
},
"plugins": [
"@typescript-eslint"
],
"rules": {
}
}

我正在使用VS Code,在编辑TypeScript时,会显示ESLint的错误。但是,我遇到的问题是:编译器将允许不符合 ESLint 规则的代码通过,并且生成的 JavaScript 代码也不符合规则。例如,它将用分号终止每个语句,而不应该这样做。

我是 TypeScript 的新手,我很确定这是我做错的基本事情,但到目前为止(无法在任何文档中找到此信息。

感谢您的指导。

ESLint 不从事打字稿代码的排字检查业务。您应该依靠TypeScript来检查像tslint这样的类型错误(相应地配置它(。示例 tslint.json

{
"rulesDirectory": ["node_modules/codelyzer"],
"rules": {
"arrow-return-shorthand": true,
"callable-types": true,
.....
}
ESLint

不涉及捆绑构建管道。 但是,您可以在捆绑构建之前运行 Eslint,以便在出现 linting 问题时使整个构建失败。

如果你想对生成的代码进行任何更改,应该使用 webpack 插件/打字稿来完成。

因此,例如,如果您想删除分号,这可能应该使用您的缩小器/压缩器来完成。 如uglifyjs:https://github.com/mishoo/UglifyJS#output-options

您缺少的只是在 eslint 文件parserOptionsproject的属性调用。

....
“parserOptions”:{
.....
“project”: [“./tsconfig.json”]
.....

您也可以向两个文件添加更多内容

最新更新