如何一次更新所有npm软件包/模块?

时间:2015-11-05 19:25:23

标签: node.js command-line module npm packages

我很难找到一种更新所有npm软件包的方法,有些文章建议编辑package.json文件,其中所有版本号都需要更改为*,因此强制节点抓取最新版本,但其他人声称这种方法不被认为是好的。理想情况下,我想为此找到一个命令行选项。

5 个答案:

答案 0 :(得分:2)

npm outdated是您要运行的命令,用于查找所有不是最新的软件包。您可以将npm output -json的输出通过管道传输到文件中,然后遍历JSON以安装最新版本的软件包。

答案 1 :(得分:2)

你可以试试这些单行。

更新所有依赖项:

$ npm out --long --parseable |grep 'dependencies$' |cut -d: -f4 |xargs npm install --save

更新所有devDependencies:

$ npm out --long --parseable |grep 'devDependencies$' |cut -d: -f4 |xargs npm install --save-dev

请记住,这通常不是一个好主意,因为您可能需要在升级包的过程中更改某些内容。如果您的项目有很多依赖项,最好逐个或小组更新它们并经常运行测试。

答案 2 :(得分:1)

一个简单的步骤:

  

$ npm i -g npm-check-updates&& ncu -a&& npm i

这会将package.json中的所有软件包设置为最新版本。

答案 3 :(得分:0)

对于单个模块,您可以尝试npm install --save module@latest这也会改变package.json。您可以在nodejs中编写shell脚本或脚本来迭代package.json并更新所有模块。

答案 4 :(得分:0)

可以使用npm update执行所有模块的递归更新:

  • 对于本地个已安装的模块:npm update --depth 9999 --dev
  • 对于全局个已安装的模块:npm update --depth 9999 --dev -g

一个现成的NPM脚本,用于更新所有具有相关性的Node.js模块:
How to update all Node.js modules automatically?