【问题标题】:Incompatible peer dependency (using ng update @angular/core) - clarifying message不兼容的对等依赖(使用 ng update @angular/core) - 澄清消息
【发布时间】:2021-04-15 09:00:30
【问题描述】:

我正在通过运行以下命令将我的 Angular 项目更新为 11.0.5

ng update @angular/core@11.0.5

出现的错误信息如下:

Package "codelyzer" has an incompatible peer dependency to "@angular/common" (requires ">=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0" (extended), would install "11.0.5")

问题:

  1. 如果 Angular 被更新为11.0.5,这是否意味着现有的 codelyzer 将无法运行,因为它仅在此版本括号内与 Angular 兼容:>=2.3.1 6.0.0-beta
  2. 如何解释“将安装 11.0.5”?是不是说运行ng update @angular/core@11.0.5这个命令,会把Angular更新到11.0.5,后果就是和现有的codelyzer版本不兼容?
  3. 在大多数 SO 情况下,人们建议使用 --force 标志运行更新。首先更新codelyzer的正确方法是什么?然后只更新 Angular 到 11.0.5?

谢谢。

【问题讨论】:

    标签: angular npm


    【解决方案1】:

    Angular 已弃用 Codelyzer

    我们将在版本 11 中弃用 TSLint 和 Codelyzer。这意味着在未来的版本中,用于 linting Angular 项目的默认实现将不可用。 ng lint 命令的功能类似于 ng deploy,建议开发人员可以将推荐的实现添加到他们的项目中。

    所以基本上 Angular 推荐使用eslint。如果您已升级到 Angular 11,那么我建议您也通过关注 the steps in the official Angular documentation 迁移到使用 eslint

    如果将 Angular 更新到 11.0.5,这是否意味着现有的 codelyzer 将无法运行,因为它仅在此版本括号内与 Angular 兼容:>=2.3.1 6.0.0-beta

    如果您使用--force 安装标志codelyzer 将运行。但主要问题是,在 Angular 的未来版本中,由于它已被弃用,它将被删除,因此最好按照建议进行升级

    如何解释“将安装 11.0.5”?是不是说运行ng update @angular/core@11.0.5这个命令,会把Angular更新到11.0.5,后果就是和现有的codelyzer版本不兼容了?

    是的,这会将多个版本的依赖项更新为Angular 11.0.5。我确实使用--force 标志将我的项目更新到了Angular 11,但codelyzer 的工作方式没有任何差异。

    在大多数情况下,人们建议使用 --force 标志运行更新。首先更新codelyzer的正确方法是什么?然后只更新 Angular 到 11.0.5?

    如果由于依赖项不兼容而需要更新,没有--force 标志,那么命令将失败。您可以使用--force 标志,并在成功安装更新后解决引发的警告,例如从tslint 迁移到eslint

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2019-02-03
      • 2019-08-13
      • 2021-08-02
      • 2019-12-06
      • 2021-01-31
      • 2022-06-10
      • 1970-01-01
      相关资源
      最近更新 更多