npm过时的全局包:如何实际更新包?

时间:2017-02-13 04:52:36

标签: node.js npm

❯ npm outdated -g
Package              Current  Wanted  Latest  Location
eslint                3.11.1  3.11.1  3.15.0
eslint-plugin-react    3.0.0   6.9.0   6.9.0
flow-bin              0.35.0  0.39.0  0.39.0
grunt-cli             0.1.13   1.2.0   1.2.0
gulp                   3.9.0   3.9.1   3.9.1
jshint                 2.8.0   2.9.4   2.9.4
npm                    3.8.6   4.3.0   4.2.0
uglify-js              2.7.0   2.7.5   2.7.5

想知道为什么我的eslint不会更新。 npm upgrade -g -dd eslint告诉我

npm verb outdated not updating eslint because it's currently at the maximum version that matches its specified semver range

这导致我尝试outdated,但不管怎样,全局package.json并不存在。那我为什么限于3.11 ??

根据npmjs doc,

  

如果没有可用的semver范围(即你运行过时npm过时了)   --global,或包不包含在package.json中),然后想要显示当前安装的版本。

这根本没有任何意义。

2 个答案:

答案 0 :(得分:1)

要将全局包更新到“最新”版本

npx npm-check --global --update

这会将全局包更新到“最新”版本*。 More information is available about npm-check,包括无需提示即可更新、排除软件包等


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


最后,如果您碰巧想将软件包更新(安装)到“最新”或“想要”以外的版本npm install --global <pkg>@<version>

答案 1 :(得分:0)

遵循npm的事实上的工作流程,我们删除并重新安装软件包。

npm remove -g eslint && npm install -g eslint

npm,你为什么这么糟糕?