# 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 后面的圆括号中,以便用户更容易识别项目的潜在分支。

当作为 llla 运行时,默认情况下它会显示扩展信息。

# 注意:设计更改待定

当 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 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

# depth

Default: 如果 --all 设置为无穷大,否则为 1 Type: null | Number

递归 npm ls 包时的深度。

如果不设置,npm ls 将只显示根项目的直接依赖项。如果设置了 --all,那么 npm 默认会显示所有依赖项。

# omit

  • Default: 'dev' | ''
  • Type: "dev", "optional", or "peer" (可以设置多次)

要从磁盘上的安装树中省略的依赖类型。

注意

这些依赖项仍然被解析并添加到 package-lock.jsonnpm-shrinkwrap.json 文件中。

如果包类型同时出现在 --include--omit 列表中,那么它将被包括在内。

如果结果省略列表包括 dev,则 NODE_ENV 环境变量将设置 production 为所有生命周期的脚本。

  • 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 仅在指定的工作空间上运行,而不是在根项目上运行。

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

  • Default: false
  • Type: Boolean

当设置文件: 存在于项目根目录之外的协议依赖项将被打包并安装为常规依赖项,而不是创建符号链接。此选项对工作区没有影响。

Last Updated: 4/25/2023, 9:49:29 AM