npm-ls

列出已安装的包

选择 CLI 版本

概述

npm ls <package-spec>
alias: list

描述

此命令将打印到标准输出所有已安装的包版本,以及在指定 --all 时其依赖项,以树状结构显示。

注意:要获得关于特定包为何被包含在树中的“自下而上”视图,请使用 npm explain.

位置参数是 name@version-range 标识符,这将把结果限制为仅指定包的路径。请注意,嵌套包也会显示到指定包的路径。例如,在 npm 源代码树中运行 npm ls promzard 将显示

它将打印出多余的、缺少的和无效的包。

如果项目为依赖项指定了 git URL,这些 URL 将在 name@version 后面括号中显示,以便用户更容易识别项目的潜在 fork。

显示的树是基于包依赖项的逻辑依赖项树,而不是您 node_modules 文件夹的物理布局。

当以 llla 运行时,它默认显示扩展信息。

注意:设计更改待定

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 outdatednpm ls 时,设置 --all 将显示所有过时或已安装的包,而不是仅显示当前项目直接依赖的包。

json

  • 默认值:false
  • 类型:布尔值

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

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

并非所有 npm 命令都支持。

long

  • 默认值:false
  • 类型:布尔值

lssearchhelp-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.jsonnpm-shrinkwrap.json 文件中。它们只是没有物理安装在磁盘上。

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

如果结果省略列表包含 'dev',那么 NODE_ENV 环境变量将为所有生命周期脚本设置为 'production'

include

  • 默认
  • 类型: "prod","dev","optional" 或 "peer" (可以设置多次)

允许定义要安装的依赖项类型的选项。

这是 --omit=<type> 的反面。

--include 中指定的依赖项类型将不会被省略,无论在命令行中省略/包含的顺序如何。

  • 默认值: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_ALLLC_CTYPELANG 环境变量所定义。
  • 类型:布尔值

当设置为 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 仅对指定的工作区进行操作,而不在根项目上进行操作。

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

  • 默认值:false
  • 类型:布尔值

当设置时,file: 协议依赖项将被打包并安装为常规依赖项,而不是创建符号链接。此选项对工作区没有影响。

另请参阅