目录
npm-ls
选择 CLI 版本
目录
概述
npm ls <package-spec>alias: list
描述
此命令将打印到标准输出所有已安装的包版本,以及在指定 --all
时其依赖项,以树状结构显示。
注意:要获得关于特定包为何被包含在树中的“自下而上”视图,请使用 npm explain
.
位置参数是 name@version-range
标识符,这将把结果限制为仅指定包的路径。请注意,嵌套包也会显示到指定包的路径。例如,在 npm 源代码树中运行 npm ls promzard
将显示
[email protected] /path/to/npm
它将打印出多余的、缺少的和无效的包。
如果项目为依赖项指定了 git URL,这些 URL 将在 name@version
后面括号中显示,以便用户更容易识别项目的潜在 fork。
显示的树是基于包依赖项的逻辑依赖项树,而不是您 node_modules
文件夹的物理布局。
当以 ll
或 la
运行时,它默认显示扩展信息。
注意:设计更改待定
npm ls
命令的输出和行为在 npm 创建一个 node_modules
文件夹时很有意义,该文件夹天真地嵌套了每个依赖项。在这种情况下,逻辑依赖项图和磁盘上包的物理树将大致相同。
随着 npm v3 中自动安装时依赖项重复数据消除的出现,ls
输出已修改为以树状结构显示逻辑依赖项图,因为这对大多数用户来说更有用。但是,如果不使用 npm ls -l
,就无法显示包的实际安装位置!
随着 npm v7 中自动安装 peerDependencies
的出现,这变得更加奇怪,因为 peerDependencies
在逻辑上位于依赖项图中其依赖项的下方,但始终位于磁盘上其位置或其上方。
此外,自从 npm 获得 ls
命令(在版本 0.0.2 中!)以来,依赖项图总体上变得更大。因此,为了避免向终端转储过多的内容,npm ls
现在只显示顶级依赖项,除非提供 --all
。
目前正在对该命令的使用案例、意图、行为和输出进行彻底重新审查。预计 npm v8 中将至少对默认人类可读的 npm ls
输出进行重大更改。
配置
all
- 默认值:false
- 类型:布尔值
在运行 npm outdated
和 npm ls
时,设置 --all
将显示所有过时或已安装的包,而不是仅显示当前项目直接依赖的包。
json
- 默认值:false
- 类型:布尔值
是否输出 JSON 数据,而不是正常输出。
- 在
npm pkg set
中,它在将设置值保存到您的package.json
之前,使用 JSON.parse() 启用解析设置值。
并非所有 npm 命令都支持。
long
- 默认值:false
- 类型:布尔值
在 ls
、search
和 help-search
中显示扩展信息。
parseable
- 默认值:false
- 类型:布尔值
输出来自写入标准输出的命令的可解析结果。对于 npm search
,这将是制表符分隔的表格格式。
global
- 默认值:false
- 类型:布尔值
在“全局”模式下运行,以便将包安装到 prefix
文件夹中,而不是当前工作目录。有关行为差异的更多信息,请参阅 文件夹.
- 包安装到
{prefix}/lib/node_modules
文件夹中,而不是当前工作目录。 - bin 文件链接到
{prefix}/bin
- 手册页链接到
{prefix}/share/man
depth
- 默认值:如果设置了
--all
,则为Infinity
,否则为1
- 类型:null 或数字
在 npm ls
中递归包时的深度。
如果未设置,npm ls
将仅显示根项目的直接依赖项。如果设置了 --all
,则 npm 默认显示所有依赖项。
omit
- 默认值:如果
NODE_ENV
环境变量设置为“生产”,则为“dev”,否则为空。 - 类型:“dev”、“optional”或“peer”(可以设置多次)
磁盘安装树中要省略的依赖类型。
注意,这些依赖项仍然会解析并添加到 package-lock.json
或 npm-shrinkwrap.json
文件中。它们只是没有物理安装在磁盘上。
如果一个包类型同时出现在 --include
和 --omit
列表中,那么它将被包含。
如果结果省略列表包含 'dev'
,那么 NODE_ENV
环境变量将为所有生命周期脚本设置为 'production'
。
include
- 默认
- 类型: "prod","dev","optional" 或 "peer" (可以设置多次)
允许定义要安装的依赖项类型的选项。
这是 --omit=<type>
的反面。
在 --include
中指定的依赖项类型将不会被省略,无论在命令行中省略/包含的顺序如何。
link
- 默认值:false
- 类型:布尔值
与 npm ls
一起使用,将输出限制为仅链接的那些包。
package-lock-only
- 默认值:false
- 类型:布尔值
如果设置为 true,当前操作将只使用 package-lock.json
,忽略 node_modules
。
对于 update
,这意味着只有 package-lock.json
会更新,而不是检查 node_modules
并下载依赖项。
对于 list
,这意味着输出将基于 package-lock.json
所描述的树,而不是 node_modules
的内容。
unicode
- 默认:在 Windows 上为 false,在具有 unicode 本地化的 mac/unix 系统上为 true,如
LC_ALL
,LC_CTYPE
或LANG
环境变量所定义。 - 类型:布尔值
当设置为 true 时,npm 在树输出中使用 unicode 字符。当为 false 时,它使用 ascii 字符而不是 unicode 字符。
workspace
- 默认
- 类型:字符串(可以设置多次)
启用在当前项目的已配置工作区上下文中运行命令,同时通过仅运行此配置选项定义的工作区来过滤。
workspace
配置的有效值为
- 工作区名称
- 工作区目录的路径
- 父工作区目录的路径(将导致选择该文件夹中的所有工作区)
当为 npm init
命令设置时,这可以设置为尚未存在的工作区的文件夹,以创建该文件夹并将其设置为项目中的一个全新的工作区。
此值不会导出到子进程的环境中。
workspaces
- 默认:null
- 类型:null 或布尔值
设置为 true 以在 **所有** 已配置工作区的上下文中运行命令。
明确将其设置为 false 将导致像 install
这样的命令完全忽略工作区。当未明确设置时
- 对
node_modules
树进行操作的命令(install、update 等)将链接工作区到node_modules
文件夹中。 - 执行其他操作的命令(test、exec、publish 等)将在根项目上运行,除非workspace
配置中指定了一个或多个工作区。
此值不会导出到子进程的环境中。
include-workspace-root
- 默认值:false
- 类型:布尔值
当工作区为命令启用时,包含工作区根目录。
当为 false 时,通过 workspace
配置指定单个工作区,或通过 workspaces
标志指定所有工作区,将导致 npm 仅对指定的工作区进行操作,而不在根项目上进行操作。
此值不会导出到子进程的环境中。
install-links
- 默认值:false
- 类型:布尔值
当设置时,file: 协议依赖项将被打包并安装为常规依赖项,而不是创建符号链接。此选项对工作区没有影响。
另请参阅
- 包规范
- npm explain
- npm config
- npmrc
- npm 文件夹
- npm explain
- npm install
- npm link
- npm prune
- npm outdated
- npm update