在打字稿文件上启用 Eslint
Posted
技术标签:
【中文标题】在打字稿文件上启用 Eslint【英文标题】:Enabling Eslint on typescript files 【发布时间】:2016-08-22 23:27:07 【问题描述】:在 webstorm eslint 设置中,有一个“额外的 eslint 选项”字段。 在此,我补充说:
--ext .ts
来自 eslint documentation,它应该允许 eslint 处理自定义文件扩展名,在本例中为 .ts 文件。 这无济于事。我的语法错了吗?无论如何要在 .ts 文件上启用 Eslint,可能来自 .eslintrc 文件?
【问题讨论】:
【参考方案1】:--ext
允许使用自定义 javascript 扩展,你不能通过传递不同的文件扩展名来强制 ESLint 为 JavaScript 以外的语言工作。
您可以尝试使用typescript-eslint-parser 为 Typescript 启用 ESLint - 它允许从可以传递给 ESLint 的 typescript 代码构建语法树以进行 linting。
但我建议使用 Typescript linters 来检查 TypeScript 代码。例如,您可以尝试TSLint。
更新:从2017.1.3开始,WebStorm支持ESLint + typescript-eslint-parser;你只需要安装typescript
插件和typescript-eslint-parser
并相应地修改你的ESLint 配置:
"parser": "typescript-eslint-parser",
"plugins": ["typescript"]
【讨论】:
这里的答案是什么? TSLint 还是 typescript-eslint-parser?尝试了 TSLint,如果不做一些研究,它似乎无法立即工作。 答案是 - 你可以同时尝试,但我建议使用 TSLint。如果它不适合您,则不是拒绝答案的理由。这不是广告,只是解释为什么 ESLint--ext
对 TypeScript 没有任何作用
typescript-eslint-parser 在任何情况下都对我不起作用。
当我使用"parser": "typescript-eslint-parser",
时,我的其他项目用javascript无法通过vscode eslint插件验证和格式化,你知道如何解决这个问题吗?
任何使用 typescript-eslint-parser 的人都应该使用 @typescript-eslint/parser 而不是 eslint.org/blog/2019/01/future-typescript-eslint【参考方案2】:
2020 年答案:
我的问题是 .ts 文件的 WebStorm 的“问题”选项卡中没有显示 ESLint 错误/警告(这也适用于 Rider),即使 VS Code 工作正常(显示警告/错误)也是如此文件。
解决方案:
-
按 CTRL+SHIFT+A
-
搜索“注册表...”
-
开始键入
eslint.additional.file.extensions
以查找该注册表项
-
将
eslint.additional.file.extensions
的值设置为js,ts
(如上图所示)
您可能应该重新启动编辑器才能确定。这对我有用(错误/警告开始出现在问题部分,就像在 VS Code 中一样),我正在使用@typescript-eslint/[somethinghere]
规则等。
【讨论】:
你知道磁盘上的哪个配置文件(在 linux 上)受到这个变化的影响吗? 我不相信这是保存在文件中的。我假设您之所以问,是因为您想在同事之间共享此设置-我遇到了同样的问题,但找不到解决方案。我只是把这个答案的链接放在我的文档中,告诉人们手动启用 eslint。【参考方案3】:尝试将此行添加到您的 .eslintrc.json 中
"plugins": ["typescript"]
就我而言,我使用此配置将我的.vue
和.ts
文件格式化为 eslint:
"parser": "vue-eslint-parser",
"parserOptions":
"parser": "typescript-eslint-parser"
,
"extends": [
"eslint:recommended",
"plugin:vue/recommended",
"typescript"
],
"plugins": ["typescript"]
【讨论】:
以上是关于在打字稿文件上启用 Eslint的主要内容,如果未能解决你的问题,请参考以下文章
对于打字稿,当前未启用“decorators-legacy”的错误,事件我设置了experimentalDecorators和emitDecoratorMetadata为真