npm-outdated

检查过时的包

选择命令行版本:

概要

🌐 Synopsis

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

描述

🌐 Description

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

🌐 This command will check the registry to see if any (or, specific) installed packages are currently outdated.

默认情况下,仅显示根项目的直接依赖以及你配置的 workspaces 的直接依赖。也可以使用 --all 来查找所有过时的元依赖。

🌐 By default, only the direct dependencies of the root project and direct dependencies of your configured workspaces are shown. Use --all to find all outdated meta-dependencies as well.

在输出中:

🌐 In the output:

  • wanted 是满足 package.json 中指定的 semver 范围的最大版本。如果没有可用的 semver 范围(例如,你正在运行 npm outdated --global,或者该包未包含在 package.json 中),那么 wanted 会显示当前已安装的版本。
  • latest 是在注册表中标记为最新版本的包。运行 npm publish 并且没有特殊配置时,将会以 latest 的 dist-tag 发布该包。该版本可能是包的最大版本,也可能不是最新发布的版本,这取决于包的开发者如何管理最新的 dist-tag
  • location 表示软件包在物理树中的位置。
  • depended by 显示哪个软件包依赖于所显示的依赖
  • package type(在使用 --long / -l 时)会告诉你这个包是 dependency 还是开发/同伴/可选依赖。未包含在 package.json 中的包总是标记为 dependencies
  • homepage(当使用 --long / -l 时)是包的 packument 中包含的 homepage
  • 红色表示有更新的版本符合你的 semver 要求,因此你应该立即更新。
  • 黄色表示存在一个比你的 semver 要求更新的版本(通常是新的主要版本,或新的 0.x 次要版本),因此请谨慎操作。

一个示例

🌐 An example

$ 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

🌐 With these dependencies:

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

需要注意的几点:

🌐 A few things to note:

  • glob 需要 ^5,这导致 npm 无法安装 glob@6,因为它不在 semver 范围内。
  • 由于 Git 依赖的指定方式,Git 依赖总是会被重新安装。安装的提交可能满足依赖规范(如果它是某个不可变的东西,比如提交 SHA),也可能不满足,因此 npm outdatednpm update 必须获取 Git 仓库以进行检查。这就是为什么目前重新安装 Git 依赖总是会强制进行新的克隆和安装的原因。
  • npm@3.5.2 被标记为“所需”,但“最新”是 npm@3.5.1,因为 npm 使用 dist-tags 来管理它的 latestnext 发布渠道。npm update 将安装最新版本,但 npm install npm(没有语义化版本范围)将安装被标记为 latest 的版本。
  • once 已经过时了。重新从头安装 node_modules 或运行 npm update 就可以使其符合规范。

配置

🌐 Configuration

all

  • 默认:否
  • 类型:布尔

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

🌐 When running npm outdated and npm ls, setting --all will show all outdated or installed packages, rather than only those directly depended upon by the current project.

json

  • 默认:否
  • 类型:布尔

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

🌐 Whether or not to output JSON data, rather than the normal output.

  • npm pkg set 中,它可以在将值保存到你的 package.json 之前使用 JSON.parse() 解析设置的值。

并非所有 npm 命令都支持。

🌐 Not supported by all npm commands.

long

  • 默认:否
  • 类型:布尔

lssearchhelp-search 中显示扩展信息。

🌐 Show extended information in ls, search, and help-search.

parseable

  • 默认:否
  • 类型:布尔

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

🌐 Output parseable results from commands that write to standard output. For npm search, this will be tab-separated table format.

global

  • 默认:否
  • 类型:布尔

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

🌐 Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See folders for more on the differences in behavior.

  • 软件包被安装到 {prefix}/lib/node_modules 文件夹中,而不是当前工作目录。
  • bin 文件与 {prefix}/bin 关联
  • 手册页已链接到 {prefix}/share/man

workspace

  • 默认值:
  • 类型:字符串(可以多次设置)

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

🌐 Enable running a command in the context of the configured workspaces of the current project while filtering by running only the workspaces defined by this configuration option.

workspace 配置的有效值为以下之一:

🌐 Valid values for the workspace config are either:

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

对于 npm init 命令设置时,可以将其设置为一个尚不存在的工作区文件夹,以创建该文件夹并将其作为项目内全新的工作区进行设置。

🌐 When set for the npm init command, this may be set to the folder of a workspace which does not yet exist, to create the folder and set it up as a brand new workspace within the project.

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

🌐 This value is not exported to the environment for child processes.

也可以看看

🌐 See Also