目录
npm-ls
选择 CLI 版本
目录
概述
npm ls <package-spec>alias: list
描述
此命令将打印到标准输出所有已安装的包版本,以及在指定 --all 时其依赖项,以树状结构显示。
注意:要获得关于特定包为何被包含在树中的“自下而上”视图,请使用 npm explain.
位置参数是 name@version-range 标识符,这将把结果限制为仅指定包的路径。请注意,嵌套包也会显示到指定包的路径。例如,在 npm 源代码树中运行 npm ls promzard 将显示
npm@10.5.2 /path/to/npm└─┬ init-package-json@0.0.4└── promzard@0.1.5
它将打印出多余的、缺少的和无效的包。
如果项目为依赖项指定了 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