npm 这是正确的,ng update --all只显示可用的升级选项吗?

7hiiyaii  于 2023-03-30  发布在  其他
关注(0)|答案(3)|浏览(111)

如果我运行命令

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的执行是否会发生变化?
我只想看到所有的软件包都被检测到需要更新。

2jcobegt

2jcobegt1#

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

**Angular 11+:**使用包管理器的update命令:

NPM:npm updatesource
Yarn:yarn upgradesource

Angular 11之前

在2020年初,ng update --all只是更新所有软件包。
大约在2020年底,--all标志被弃用:
--all功能已从ng update中删除,因为不建议一次更新多个包。要更新工作区“package.json”中的依赖项,请使用包管理器的update命令

yacmzcpb

yacmzcpb2#

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

ng update [packages] [options]

查看ng update command docs以了解更多信息。
这是因为在默认情况下,ng update命令在没有任何参数/包的情况下指定时,将尝试更新所有包(如果可能)。
下面是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,以了解该命令的工作原理。

pbgvytdp

pbgvytdp3#

在Angular的新版本中,这不再包含在内,但您可以通过以下方式复制它:

ng update --force $(jq -r '.dependencies * .devDependencies | keys | map(select(startswith("@angular"))) | @tsv' package.json)

(then运行:ncu-ux '/typescript|rxjs/'
我的问题是恢复功能:https://github.com/angular/angular-cli/issues/23261

相关问题