gpt4 book ai didi

angular-cli - 带有 eslint 的 Angular 项目 super 慢

转载 作者:行者123 更新时间:2023-12-04 11:31:32 25 4
gpt4 key购买 nike

我有一个由 590 个 TypeScript 文件组成的 Angular12 项目。当我这样做时 ng lint它运行 TSLint 并在大约 5 秒内完成。尽管如此,我还是尝试按照 official video 上的说明升级到 eslint。来自 Angular,现在 ng lint需要超过 10 分钟(我实际上没有让过程完成,我在 10 分钟标记处停止了它)。
我试图隔离问题以了解原因是否是 ngeslint所以我使用 npm i -g eslint 在全局范围内安装了 eslint并使用单个文件的计时信息运行它:

time TIMING=1 eslint /home/user/my-file.ts
即使对于这个单个文件,它也花费了 2 多分钟。奇怪的是 eslint报告每个规则只用了几毫秒,而 Linux 说它用了 148 秒(准确地说,用了 2 多分钟):
Rule                                        | Time (ms) | Relative
:-------------------------------------------|----------:|--------:
@angular-eslint/no-conflicting-lifecycle | 0.342 | 35.9%
@angular-eslint/no-input-rename | 0.163 | 17.1%
@angular-eslint/template/banana-in-box | 0.161 | 16.9%
@angular-eslint/no-output-rename | 0.103 | 10.9%
@angular-eslint/component-class-suffix | 0.100 | 10.5%
@angular-eslint/contextual-lifecycle | 0.083 | 8.7%
@angular-eslint/directive-class-suffix | 0.000 | 0.0%
@angular-eslint/no-empty-lifecycle-method | 0.000 | 0.0%
@angular-eslint/no-host-metadata-property | 0.000 | 0.0%
@angular-eslint/no-inputs-metadata-property | 0.000 | 0.0%
Rule | Time (ms) | Relative
:----|----------:|--------:
TIMING=1 eslint 148.14s user 4.47s system 190% cpu 1:19.96 total
如何让 eslint 运行得更快?

最佳答案

潜在的问题仍然是 TypeScript 编译器生成 AST 的开销,以及 @typescript-eslint/typescript-estree 将这个 AST 转换为 ESLint 兼容 AST 的工作。
但是,有一些小的调整:

  • 设置 .eslintignore 以忽略不相关的目录,例如
    node_modules 和非 typescript 文件
  • 使用 --cache 标志时
    运行 eslint:eslint --cache **/_.ts。存储有关的信息
    处理的文件,以便仅对更改的文件进行操作。

  • TypeScript performance上还有一整篇文章其中建议:
  • 使用 include 属性设置 tsconfig.json 以仅指定项目中包含应编译的 TypeScript 文件的输入文件夹。
  • 避免添加过多的 exclude 和 include 文件夹,因为必须通过遍历包含的目录来发现 TypeScript 文件,因此运行多个文件夹实际上会减慢编译速度。
  • 关于angular-cli - 带有 eslint 的 Angular 项目 super 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68628738/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com