与功能请求相关的@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:
- TSLint has been deprecated in favor of ESLint #37843 -> Migration to ESLint angular-cli#13732:面向用户,与此不同
- TSLint is the default linting tool for angular? #42639:面向用户,与此不同
- refactor(docs-infra): migrate from tslint to eslint #42820:只完成了一半
建议的解决方案
我建议逐步切换到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,如 Biome 、 deno lint
和 Oxc / oxlint
- 尽管它们还没有支持 linting with type information 。或者, tsslint 也处于开发中,但不清楚它是否与其他人一样成熟。
我的理解是Google仍然在内部使用TSLint,让这个公共的angular/angular仓库也使用TSLint有一些对工具的好处。很高兴知道是否是这样,如果是的话,是否希望将工具迁移到更新的工具上是可取且可行的。
1条答案
按热度按时间m3eecexj1#
我最近没有深入研究ESLint + TS,但当时的主要担忧有:
Angular团队将继续需要TSLint,因为Google内部仍在使用它,一些迁移修复程序(作为linters实现)是基于TSLint的——因此团队中对TSLint有共享的知识。
总的来说,我不认为我们反对ESLint。我们之前一直在使用它来构建angular.io网站。这主要是资源/带宽的问题(如在Slack上所沟通的那样)。cc @clydin在我之前处理过这个问题。