# 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 →