Npm更新不安装最新的软件包版本?

时间:2020-03-25 14:17:05

标签: javascript node.js npm

我安装时

npm i nodemon

我当然总是得到最新的版本,在这种情况下是:2.0.2,

但是如果我安装一些旧版本,例如 npm我nodemon@1.18.11 然后我尝试npm更新 我得到的是1.19.4版本,但没有上一个版本2.0.2

就像我使用npm install nodemon一样。

为什么在这种情况下npm update不更新为2.0.2?

2 个答案:

答案 0 :(得分:1)

这取决于npm的版本,但是npm update如果破坏了一个或多个依赖关系,则不会获得该软件包的较新的主要版本。实际上,您只能使用1.x版本。您可以轻松地使用npm i foo来获取最新版本,而不显示警告。有关更多详细信息,请参见https://docs.npmjs.com/cli-commands/update.html,具体取决于您使用的npm版本(以及如何获得以前的行为)。

答案 1 :(得分:1)

这取决于nodemon的package.json条目。

例如,如果模块具有以下依赖性:

{
  "dist-tags": { "latest": "1.2.2" },
  "versions": [
    "1.2.2",
    "1.2.1",
    "1.2.0",
    "1.1.2",
    "1.1.1",
    "1.0.0",
    "0.4.1",
    "0.4.0",
    "0.2.0"
  ]
}

然后您在package.json文件中指定'^':

"dependencies": {
  "module": "^1.1.1"  //npm update will install module@1.2.2, because 1.2.2 is latest and 1.2.2 satisfies ^1.1.1
}

或 如果使用'〜'指定了您的版本,请遵循以下步骤:

"dependencies": {
  "module": "~1.1.1" // npm update will install dep1@1.1.2. Even though the latest tag points to 1.2.2, this version does not satisfy ~1.1.1, which is equivalent to >=1.1.1 <1.2.0. So the highest-sorting version that satisfies ~1.1.1 is used, which is 1.1.2
}

要获得更多了解,您可以阅读以下文档: https://docs.npmjs.com/cli-commands/update.html