如何将所有全球NPM软件包升级到最新的非中断/次要版本?

toe95027  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(223)

我尝试将所有全局包(包括NPM本身)更新到当前主版本的最新次版本(如current_major.x.x)。
npm upgrade -g --force将强制升级所有全局软件包,包括主要版本,但这肯定会破坏一些东西。
我知道我可以升级所有知道当前主要版本的软件包,但是我想自动化这个过程。

2exbekwf

2exbekwf1#

这将为我做到这一点,虽然,它将重新安装现有的软件包,即使没有版本的变化。

npm_global_packages=($(npm list -g --depth 0 | awk '/ /{print $2}'))
for val in "${npm_global_packages[@]}"; do
    npm i -g --force $(echo $val | tr "." "\n" | head -1)
done

--force选项是为了避免符号链接问题。离开它不会解决不必要的重新安装。我想知道是否有一个更聪明的方法,但这是我现在要去的。
深入了解

  • npm_global_packages将是一个类似npm@6.14.12 npx@10.2.2 pm2@5.2.0 rimraf@3.0.2的数组。
  • tr "." "\n" | head -1会将每个值按.拆分,并只返回第一个段,因此脚本实际上会运行npm i -g --force npm@6npm i -g --force npx@10 ...,这将在相同的主版本上重新安装所有软件包,尽管是最新的次版本。
7uzetpgm

7uzetpgm2#

这和我遇到的问题是一样的,我尝试了所有我能找到的解决方案,但最后在文档中找到了答案。您可以通过以下方式更新所有软件包,而不会产生任何副作用:

npm install npm@latest -g

您可以找到更多详细信息here

相关问题