angular 内部仓库工具:使用ESLint代替已弃用的TSLint,

6vl6ewon  于 4个月前  发布在  Angular
关注(0)|答案(1)|浏览(51)

与功能请求相关的@angular/*包有哪些?

core

描述

为在这里使用错误的问题模板道歉:这是一个针对此仓库本身的工具建议,而不是面向最终用户的请求。我 asked on the Angular Discord 在哪里发布以及这是最佳猜测。
Angular目前使用 TSLint 作为其内部linting( tslint.json )工具,尽管 TSLint was deprecated years ago 。TSLint不支持所有新的TypeScript特性,并且自2020年以来一直没有积极开发。它的替代品是 ESLint ,具有 typescript-eslint
通过搜索 tslint in:title 找到的一些相关问题和PR:

建议的解决方案

我建议逐步切换到ESLint。许多仓库采用的一种常见策略是:

  • 将ESLint与TSLint分开添加,集成到相同的构建过程中
  • 提示: https://github.com/angular-eslint/angular-eslint
  • 从TSLint配置中删除旧的内置规则,用它们的新ESLint等效项替换它们
  • 提示: https://github.com/typescript-eslint/tslint-to-eslint-config 是那里的标准助手
  • 从TSLint配置中删除旧的自定义和插件规则,用新的自定义和/或插件等效项重写和/或替换它们
  • 提示:对于可以概括的内容,现在是添加新现有的 eslint-plugin-* 包的好时机!
  • 一旦不再使用TSLint规则,将其完全删除

我很乐意帮助这个!我认为“杀死TSLint”对生态系统有益:既可以让项目使用最新的+最好的工具,也可以帮助更多社区输入ESLint + typescript-eslint。

考虑过的其他替代方案

我猜想Angular可以永远留在TSLint上,这将是一个真正的遗憾。甚至可以分叉旧的TSLint代码库 - 所有结构性问题等等。
另一个替代方案是除了ESLint之外的linter。有一些基于Rust的linter,如 Biomedeno lintOxc / oxlint - 尽管它们还没有支持 linting with type information 。或者, tsslint 也处于开发中,但不清楚它是否与其他人一样成熟。
我的理解是Google仍然在内部使用TSLint,让这个公共的angular/angular仓库也使用TSLint有一些对工具的好处。很高兴知道是否是这样,如果是的话,是否希望将工具迁移到更新的工具上是可取且可行的。

m3eecexj

m3eecexj1#

我最近没有深入研究ESLint + TS,但当时的主要担忧有:

  • 它与成熟的TypeScript AST(至少对我们团队来说)不同。
  • 似乎可以从ESTree转换为TS节点,但遍历/访问者似乎是基于ESTree的。
  • 当时似乎TypeScript与ESLint的自然支持程度不高,设置比TSLint更复杂(可能已经改变/或记错了)。
  • ESLint比TSLint慢/效率低(tslint替代品#45153?)(评论)?

Angular团队将继续需要TSLint,因为Google内部仍在使用它,一些迁移修复程序(作为linters实现)是基于TSLint的——因此团队中对TSLint有共享的知识。
总的来说,我不认为我们反对ESLint。我们之前一直在使用它来构建angular.io网站。这主要是资源/带宽的问题(如在Slack上所沟通的那样)。cc @clydin在我之前处理过这个问题。

相关问题