# 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 outdated
和npm update
必须获取 Git repos 来检查。这就是为什么当前重装 Git 依赖总是强制进行新的克隆和安装。 npm@3.5.2
被标记为 "wanted",但 "latest" 是npm@3.5.1
,因为 npm 使用 dist-tags 来管理它的latest
和next
发布渠道。npm update
将安装最新版本,但npm install npm
(没有 semver 范围) 将安装任何标记为latest
的内容。once
完全过时了。从头重新安装node_modules
或运行npm update
将使其符合规范。
# 配置
# all
- Default: false
- Type: Boolean
运行 npm outdated
和 npm ls
时,设置 --all
将显示所有过时或已安装的包,而不仅仅是当前项目直接依赖的包。
# json
- Default: false
- Type: Boolean
是否输出 JSON 数据,而不是正常输出。
npm pkg set
支持使用 JSON.parse() 解析集合值,然后保存到你的package.json
。
并非所有 npm 命令都支持。
# long
- Default: false
- Type: Boolean
分别显示 ls
、search
和 help-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
命令设置时,可以将其设置为尚不存在的工作空间的文件夹,以创建文件夹并将其设置为项目中的全新工作空间。
此值不会导出到子进程的环境中。