npm`要求`vs“最新”

时间:2015-09-21 07:45:04

标签: node.js npm

我使用npm安装一些命令行工具。让itch始终保持最新状态,我找到了命令npm -g outdated

wantedlatest之间有什么区别?

文档说明:

  

由此产生的字段'想要'显示最新版本   package.json中指定的版本,字段' latest'很   最新版本的包。

但是我根本没有发现它。 例如,在我的系统上,我得到:

Package  Current  Wanted  Latest  Location
cordova    5.3.1   5.3.3   5.3.1  lib
npm        3.3.4   3.3.4   3.3.3  lib

wanted如何高于latest?这似乎与之相矛盾:

  

该领域'最新'包的最新版本

我应该更新哪个版本(我只使用命令行,而不是任何node.js代码)?

3 个答案:

答案 0 :(得分:18)

{ - 1}}字段在--global运行的上下文中没有任何意义,因为没有wanted来定义您需要的版本。

  

我应该更新哪个版本(我只使用命令行,而不是任何node.js代码)?

如果您喜欢生活在最佳状态,最新版本似乎是一个不错的选择。

想要的列似乎是一个错误,它在github many times中报告。

更新(检查来源后)

这些文件似乎有点误导,所以我们澄清一下:

  

结果字段“想要”根据package.json ...

中指定的版本显示最新版本

由于没有全局package.json,所使用的版本约束是'*'(设置here)。

然后,根据semver,所需版本是该软件包的最新版本。

  

该字段'最新'该软件包的最新版本。

这不是真的,你得到的是dist-tag“最新”,它通常与最新版本相匹配(见here)。有些软件包使用这些标签来管理显示的内容(如npm)。

  

我应该更新哪个版本(我只使用命令行,而不是任何node.js代码)?

似乎边缘想要

答案 1 :(得分:1)

<强>更新

目前我的机器npm -g outdated显示:

Package         Current  Wanted  Latest  Location
babel-cli        6.1.18   6.2.0   6.2.0
generator-rise    1.7.0   2.1.0   2.1.0
npm               3.3.6   3.5.0   3.4.1

版本3.5.0作为github上的发行版存在但尚未发布到npm。所以它在某种程度上被从那里拿起但是对npm来源的掩饰我找不到任何支持这个论点的证据。

来自official documentation

  

结果字段“想要”显示最新版本   在package.json中指定的版本,字段'latest'非常   最新版本的包。

详细说明:

npm允许您在package.json中指定一系列版本,示例可用here。指定范围内可容纳的最大版本为wanted列。

这可能与安装的版本(如果有的话)不同,因为package.json可能同时发生了变化,或者作者可能在其间推送了新的次要版本。

答案 2 :(得分:0)

考虑您的示例,cordova @ 5.3.3被标记为“需要”,而“最新”则被标记为cordova@5.3.1,因为npm使用dist标签来管理其最新和下一个发行渠道。

npm update将安装最新版本,而npm install cordova(无存储范围)将安装标记为最新的版本。

link to documentation