【问题标题】:Is this correct, ng update --all only shows the upgrade options available?这是正确的吗, ng update --all 只显示可用的升级选项?
【发布时间】:2026-02-21 22:50:01
【问题描述】:

如果我运行命令

ng update

I see a listing of items such as
@angular/cdk  6.4.7 > 8.2.0   ng update @angular/cdk
...
...

可能还有其他包已过时。

或运行 ng update --all 以尝试同时更新所有内容。

ng update 命令本身似乎没有进行任何更改。

那么,ng update --all 的执行是否会发生变化?

我只想查看检测到所有需要更新的软件包。

【问题讨论】:

    标签: angular npm angular-upgrade


    【解决方案1】:

    如果你愿意升级到主要版本的 Angular 你应该参考这个网站:https://update.angular.io/

    Angular 11+:使用包管理器的更新命令:
    NPM:npm updatesource
    纱线:yarn upgradesource

    角度 11 之前

    在 2020 年初,ng update --all 只需更新所有软件包。

    2020 年末左右,--all 标志 is deprecated

    --all 功能已从ng update 中删除,因为不建议一次更新多个包。要更新工作区“package.json”中的依赖关系,请使用包管理器的更新命令

    【讨论】:

    • 我的输出:'--all' 功能已被删除,因为不建议一次更新多个包。要更新工作区“package.json”中不提供“ng update”功能的包,请改用“npm update”。在更新提供“ng update”功能的包后运行包管理器更新命令。
    【解决方案2】:

    注意:ng update 命令允许使用附加参数指定以空格分隔的包:

    ng update [packages] [options]
    

    查看ng update command docs 了解更多信息。


    这是因为默认情况下,ng update 命令在不带任何参数/包的情况下指定时会尽可能尝试更新所有包。

    这里是更新命令的代码部分,它检查是否没有指定包:

    if (options.all || packages.length === 0) {
          // Either update all packages or show status
          return this.runSchematic({
            collectionName: '@schematics/update',
            schematicName: 'update',
            dryRun: !!options.dryRun,
            showNothingDone: false,
            additionalOptions: {
              force: options.force || false,
              next: options.next || false,
              verbose: options.verbose || false,
              packageManager,
              packages: options.all ? Object.keys(rootDependencies) : [],
            },
          });
        }
    

    从上面的代码来看,这也意味着指定--all 选项或根本不指定任何选项都将尝试更新所有包。


    注意:您可以查看update 命令的整个source code 以了解该命令的工作原理。

    【讨论】:

      最近更新 更多