# npm outdated

检查过时的包

# 概要

npm outdated [<package-spec> ...]

# 描述

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

默认情况下,仅显示根项目的直接依赖项和配置的工作区的直接依赖项。也用于 --all 查找所有过时的元依赖项。

在输出中:

  • wanted 是满足 package.json 中指定的 semver 范围的包的最大版本。如果没有可用的 semver 范围(例如,您正在运行 npm outdated --global,或者该包不包含在 package.json 中),那么 wanted 显示当前安装的版本。
  • latest 在注册表中标记为最新的包版本。在没有特殊配置的情况下运行 npm publish 将发布带有 dist-tag 标签 latest 的包。这可能是包的最大版本,也可能不是包的最新发布版本,这取决于包的开发人员如何管理最新的 dist-tag。
  • location 是包在物理树中的位置。
  • depended by 显示哪个包依赖于所显示的依赖项。
  • package type (使用 --long / -l)告诉你这个包是 dependency 还是 dev/peer/optional 依赖。未包含在其中的包 package.json 始终标记为 dependencies
  • homepage (使用 --long / -l)homepage 值是否包含在包裹的包装内。
  • 红色表示有一个更新的版本符合你的 semver 要求,所以你应该马上更新。
  • 黄色表示有一个更新的版本,高于 semver 要求的较新版本(通常是新的主要版本或新的 0.x 次要版本),需要谨慎操作。

# 例子

$ npm outdated
Package      Current   Wanted   Latest  Location                  Depended by
glob          5.0.15   5.0.15    6.0.1  node_modules/glob         dependent-package-name
nothingness    0.0.3      git      git  node_modules/nothingness  dependent-package-name
npm            3.5.1    3.5.2    3.5.1  node_modules/npm          dependent-package-name
local-dev      0.0.3   linked   linked  local-dev                 dependent-package-name
once           1.3.2    1.3.3    1.3.3  node_modules/once         dependent-package-name

有了这些 dependencies

{
  "glob": "^5.0.15",
  "nothingness": "github:othiym23/nothingness#master",
  "npm": "^3.5.1",
  "once": "^1.3.1"
}

需要注意的几点:

  • glob 需要 ^5,这会阻止 npm 安装 glob@6,这超出了 semver 范围。
  • Git 依赖项总是会被重新安装,这是由它们的指定方式决定的。安装的 committish 可能满足依赖说明符(如果它是不可变的,比如提交 SHA),也可能不是,因此 npm outdatednpm update 必须获取 Git repos 来检查。这就是为什么当前重装 Git 依赖总是强制进行新的克隆和安装。
  • npm@3.5.2 被标记为 "wanted",但 "latest" 是 npm@3.5.1,因为 npm 使用 dist-tags 来管理它的 latestnext 发布渠道。npm update 将安装最新版本,但 npm install npm (没有 semver 范围) 将安装任何标记为 latest 的内容。
  • once 完全过时了。从头重新安装 node_modules 或运行 npm update 将使其符合规范。

# 配置

# all

  • Default: false
  • Type: Boolean

运行 npm outdatednpm ls 时,设置 --all 将显示所有过时或已安装的包,而不仅仅是当前项目直接依赖的包。

# json

  • Default: false
  • Type: Boolean

是否输出 JSON 数据,而不是正常输出。

  • npm pkg set 支持使用 JSON.parse() 解析集合值,然后保存到你的 package.json

并非所有 npm 命令都支持。

# long

  • Default: false
  • Type: Boolean

分别显示 lssearchhelp-search 中的扩展信息。

# parseable

  • Default: false
  • Type: Boolean

从写入标准输出的命令输出可解析的结果。对于 npm search,这将是制表符分隔的表格格式。

# global

  • Default: false
  • Type: Boolean

以 “global” 模式运行,会将包安装到 prefix 文件夹而不是当前工作目录中。有关行为差异的更多信息,请参阅 folders。

  • 软件包被安装到 {prefix}/lib/node_modules 文件夹中,而不是当前工作目录中。
  • bin 文件链接到 {prefix}/bin
  • 操作说明链接到 {prefix}/share/man

# workspace

  • Default:
  • Type: String (可以设置多次)

启用在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。

workspace 配置的有效值如下:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择该文件夹中的所有工作区)

npm init 命令设置时,可以将其设置为尚不存在的工作空间的文件夹,以创建文件夹并将其设置为项目中的全新工作空间。

此值不会导出到子进程的环境中。

Last Updated: 6/17/2023, 6:57:19 PM