如何更新全局安装的 npm 包

Posted

技术标签:

【中文标题】如何更新全局安装的 npm 包【英文标题】:How to update globally installed npm packages 【发布时间】:2019-04-13 18:16:21 【问题描述】:

命令:npm outdated -g

输出:

Package           Current  Wanted  Latest  Location

@angular/cli        1.3.1   1.7.4   7.0.5
create-react-app    1.5.2   1.5.2   2.1.1
eslint              5.6.0   5.9.0   5.9.0
expo-cli            2.2.0   2.3.8   2.3.8
gulp-cli            1.4.0   1.4.0   2.0.1
how-to-npm          2.5.0   2.5.1   2.5.1
mocha               3.5.0   3.5.3   5.2.0
nodemon            1.18.3  1.18.6  1.18.6
now                11.4.6  11.5.2  12.0.1
serve              10.0.1  10.0.2  10.0.2
typescript          2.4.2   2.9.2   3.1.6
yarn                1.9.4  1.12.3  1.12.3

如何在 npm 中更新这些过时的包?

【问题讨论】:

【参考方案1】:

如果你想更新所有全局包

npm update -g

如果你想更新特定的全局包

npm update -g <package_name>

【讨论】:

出现此错误:npm ERR!路径 /usr/bin/ng npm 错误!代码 EEXIST npm 错误!拒绝删除 /usr/bin/ng: 在 /usr/lib/node_modules/@angular/cli 之外,而不是链接 npm ERR!文件存在:/usr/bin/ng npm ERR!将其移开,然后重试 如果你使用 Mac 命令是 sudo npm update -g 并且如果 windows 以管理员身份打开终端然后执行 npm update -g 请注意,如果您使用nvm,则会出现问题。您仅列出当前版本的模块,但在您的路径中您可能仍会看到旧版本的模块。这发生在我身上,我在旧节点中有旧的 eslint,无法更新它。 npm update -g 正在抛出最新错误,请参阅issue。 我们可以用这个命令更新到特定版本吗?【参考方案2】:

为了补充 Mohit 的答案,如果您使用的是 NPM 2.6 或更低版本,那么有几个脚本可以方便地处理这种情况下的更新:https://gist.github.com/othiym23/4ac31155da23962afd0e。

您需要创建所描述的两个文件,并从命令提示符运行它们。这将更新所有包。如需选择性更新,请在上面的链接中向下滚动页面,查看 Dylang 2014 年 10 月 20 日的评论。下面 2014 年 11 月 6 日的评论将为您提供适用于 Windows 环境的脚本。

着眼于长期维护,您最好的解决方案可能是首先通过运行更新 NPM:

npm install npm@latest -g

可以在https://docs.npmjs.com/updating-packages-downloaded-from-the-registry找到相当全面的流程文档

【讨论】:

【参考方案3】:

自动将所有全局包更新到“最新”版本:

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

这会将所有全局包更新为“最新”版本。 More information is available about npm-check,包括执行交互式更新、排除包等功能。


改为仅将全局包更新到 npm outdated --global 显示的“想要的”版本(因为全局安装的包被视为在安装时指定了插入符号 semver 范围):

npm update -g

最后,如果您想将软件包更新(安装)到“最新”或“想要”以外的版本

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

【讨论】:

截至今天:npm ERR! global requires an add or rm option @dcsan 您的 npm 版本是什么,您正在运行答案中的哪个命令? global 似乎仍然是当前文档中列出的选项。但是,一些较早的 npm 版本存在错误。以下所有链接。 docs.npmjs.com/cli/v7/commands/npm-install#globaldocs.npmjs.com/cli/v7/commands/npm-update#globalgithub.com/npm/cli/issues/1962

以上是关于如何更新全局安装的 npm 包的主要内容,如果未能解决你的问题,请参考以下文章

自动更新和升级NPM?

如何卸载使用 npm 链接安装的软件包?

如何使用纱线将全局安装的节点包链接到项目?

npm

NPM 的包管理

npm的.npmrc文件在哪里?缓存及全局包文件在什么位置?