为什么 'npm update -g' 没有将我的全局软件包更新到最新版本?



我正在按照更新全局包的步骤进行操作,所以我执行了npm outdated -g --depth=0并得到:

Package     Current  Wanted  Latest  Location
typescript    2.2.2   2.2.2   2.4.1

然后,我执行了npm update -g,但我仍然从npm outdated -g --depth=0获得相同的输出。

执行npm list -g --depth=0还会确认打字稿包尚未更新到 2.4.1:

+-- bower@1.8.0
+-- gulp@3.9.1
+-- typescript@2.2.2
`-- typings@2.1.1

我错过了什么?

您将不得不使用此脚本或似乎一一执行。

此全局更新是已知的突破点。 这是对此问题的引用。他们似乎在没有解决问题的情况下关闭了它

您还可以安装特定版本:

npm install -g typescript@2.4.1

到目前为止,还没有一个简单的命令可以做到这一点。

您可以改用以下步骤来查找过时的软件包并逐个更新它们。

确定哪些全局包需要更新:
  1. 若要查看需要更新哪些全局包,请在命令行上运行:

    npm outdated -g --depth=0
    
  2. 更新单个全局
  3. 包:要更新单个全局包,请在命令行上运行:

    npm update -g <package_name>
    

要在单个命令中将所有全局包自动更新到"最新"版本,请执行以下操作:

npx npm-check --global --update-all

这会将所有全局包更新到"最新"版本。有关 npm 检查的更多信息,包括执行交互式更新、排除包等的能力。


相反,npm update -g仅将全局软件包更新为npm outdated --global显示的"所需"版本,因为全局安装的软件包被视为使用指定的插入符号 semver 范围安装


最后,如果您碰巧想要将软件包更新(安装(到"最新"或"需要">以外的版本:

npm install --global <pkg>@<version>

最新更新