npm-outdated-explain

本次重新安装博客时,查看帮助文件时发现一个有意思的命令npm outdated

npm outdated 功能

检查过时的软件包

npm outdated 使用

1
npm outdated [[<@scope>/]<pkg> ...]

如果没有老版本的,就没有任何输出,如果有新版本的,会提示你需要更新到的版本。

npm outdated 说明

此命令将检查注册表以查看当前是否已安装任何(或特定的)已安装软件包。

在输出中:

  • wanted 是满足中指定的 semver 范围的软件包的最高版本 package.json。如果没有可用的存储范围(即您正在运行 npm outdated –global,或者该软件包未包含在其中 package.json),则 wanted 显示当前安装的版本。
  • latest 是在注册表中标记为最新的软件包的版本。npm publish 在没有特殊配置的情况下运行将发布带有 dist-tag 的软件包 latest。这可能是软件包的最高版本,也可能不是软件包的最新版本,这取决于软件包的开发人员如何管-理最新的 dist-tag。
  • location 是程序包在依赖关系树中的位置。请注意, npm outdated 默认深度为 0,因此,除非您覆盖该深度,否则始终将仅看到过时的顶级依赖项。
  • package type(使用 –long/ 时 -l)告诉您此软件包是 a dependency 还是 a devDependency。未包含的软件包 package.json 始终带有标记 dependencies。
  • homepage(当使用–long/ 时 -l)是 homepage 包中包含的值 package.json
  • 红色表示有一个新版本符合您的 semver 要求,因此您应该立即进行更新。
  • 黄色表示超出您的英语要求(通常是新的专业,或新的 0.x 次要),因此请谨慎行事。

一个例子

1
2
3
4
5
$ npm outdated
Package Current Wanted Latest Location
glob 5.0.15 5.0.15 6.0.1 test-outdated-output
nothingness 0.0.3 git git test-outdated-output
npm 3.5.1 3.5.2 3.5.1 test-outdated-output

注意事项

  • glob 需要 ^5,这 NPM 防止安装 glob@6,这是 semver 范围之外。
  • Git 依赖项将始终被重新安装,因为它们是如何指定的。安装的 committish 可能满足的依赖符(如果它的东西不可变的,就像一个犯 SHA),也可能没有,所以 npm outdated 并 npm update 有获取的 Git 回购检查。这就是为什么当前重新安装 Git 依赖项总是强制执行新克隆并安装的原因。
  • npm@3.5.2 被标记为“通缉令”,但“最新”,是 npm@3.5.1 因为故宫使用的 dist- 标签来管理其 latest 和 next 释放的通道。npm update 将安装最新版本,但 npm install npm(没有 semver 范围)将安装标记为的任何内容 latest。
  • once 只是过时了。node_modules 从头开始安装或重新运行 npm update 将使其达到规格。

原文档 https://www.npmjs.cn/cli/outdated/