# npm ls
列出已安装的软件包
# 概要
npm ls <package-spec>
alias: list
# 描述
当指定 --all 时,该命令将在树结构中向标准输出已安装包的所有版本,以及它们的依赖关系。
注意: 要获得一个 “自下而上” 的视图,看看为什么给定的包会被包含在树中,请使用 npm explain。
位置参数是 name@version-range
标识符,它将结果限制为仅指定包的路径。注意,嵌套的包还会显示指定包的路径。例如,在 npm 的源树中运行 npm ls promzard
将显示:
npm@8.0.0 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
它将打印出无关的、丢失的和无效的包。
如果一个项目为依赖项指定了 git url,这些url会显示在 name@version
后面的圆括号中,以便用户更容易识别项目的潜在分支。
当作为 ll
或 la
运行时,默认情况下它会显示扩展信息。
# 注意:设计更改待定
当 npm 创建一个简单地嵌套每个依赖项的文件夹时,该 npm ls
命令的输出和行为非常有意义。node_modules
在这种情况下,磁盘上包的逻辑依赖图和物理树将大致相同。
随着 npm v3 中安装时依赖的自动重复数据删除的出现,ls
输出被修改为将逻辑依赖图显示为树型结构,因为这对大多数用户更有用。然而,如果不使用 npm ls -l
,在很多时候就不可能显示包实际安装在哪里!
随着 peerDependencies
在 npm v7 中自动安装的出现,这变得更加奇怪,因为 peerDependencies
在逻辑上位于依赖图中它们的依赖项的“下面”,但物理上总是位于或高于它们在磁盘上的位置。
而且,自从 npm 有了 ls
命令 (在0.0.2版本中!) 以来,依赖图已经成为一种普遍的规则。因此,为了避免向终端转储过多的内容,npm ls
现在只显示顶级依赖关系,除非提供了 --all
。
目前正在对该命令的用例、意图、行为和输出进行彻底的重新检查。预计 npm v8 中至少会对默认的人类可读的 npm ls
输出进行重大更改。
# 配置
# 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
# depth
Default: 如果 --all
设置为无穷大,否则为 1
Type: null | Number
递归 npm ls
包时的深度。
如果不设置,npm ls
将只显示根项目的直接依赖项。如果设置了 --all
,那么 npm 默认会显示所有依赖项。
# omit
- Default: 'dev' | ''
- Type: "dev", "optional", or "peer" (可以设置多次)
要从磁盘上的安装树中省略的依赖类型。
注意
这些依赖项仍然被解析并添加到 package-lock.json
或 npm-shrinkwrap.json
文件中。
如果包类型同时出现在 --include
和 --omit
列表中,那么它将被包括在内。
如果结果省略列表包括 dev
,则 NODE_ENV 环境变量将设置 production
为所有生命周期的脚本。
# link
- Default: false
- Type: Boolean
与 npm ls
一起使用,将输出限制为仅链接的那些包。
# package-lock-only
- Default: false
- Type: Boolean
如果设置为 true,当前操作将只使用 package-lock.json
,忽略 node_modules
。
对于 update
来说,这意味着只有 package-lock.json
将被更新,而不是检查 node_modules
和下载依赖项。
对于 list
来说,这意味着输出将基于 package-lock.json
所描述的树,而不是 node_modules
的内容。
# unicode
Default: 在 windows 上为 false,在具有 unicode 语言环境的 mac/unix 系统上为 true,由 LC_ALL、LC_CTYPE 或 LANG 环境变量定义。 Type: Boolean
当设置为 true 时,npm 在树输出中使用 unicode 字符。当为 false 时,它使用 ascii 字符而不是 unicode 字形。
# workspace
- Default:
- Type: String (可以设置多次)
启用在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。
workspace
配置的有效值如下:
- 工作区名称
- 工作区目录的路径
- 父工作区目录的路径(将导致选择该文件夹中的所有工作区)
为 npm init
命令设置时,可以将其设置为尚不存在的工作空间的文件夹,以创建文件夹并将其设置为项目中的全新工作空间。
此值不会导出到子进程的环境中。
# workspaces
- Default: null
- Type: null or Boolean
设置为 true 将在所有配置的工作区中运行该命令。
显式地将此设置为 false 将导致如下命令 install
完全忽略工作空间。当没有显式设置时:
- 在
node_modules
树上操作的命令 (install, update, etc.) 时,将把工作区链接到node_modules
文件夹中。做其他事情的命令 (test, exec, publish, etc.) 将在根项目上操作,除非在workspace
配置中指定了一个或多个工作空间。
此值不会导出到子进程的环境中。
# include-workspace-root
- Default: false
- Type: Boolean
当为某个命令启用工作区时,请包含工作区根目录。
当为 false 时,通过 workspace
配置指定单个工作空间,或通过 workspaces
标志指定所有工作空间,将导致 npm 仅在指定的工作空间上运行,而不是在根项目上运行。
此值不会导出到子进程的环境中。
# install-links
- Default: false
- Type: Boolean
当设置文件: 存在于项目根目录之外的协议依赖项将被打包并安装为常规依赖项,而不是创建符号链接。此选项对工作区没有影响。
← npm logout npm org →