跳到主要内容
pnpm
文档目录

设置(pnpm-workspace.yaml)

查看英文原文 ↗

pnpm 从命令行、环境变量和 pnpm-workspace.yaml 获取其配置。

仅有 auth 和 registry 设置从 .npmrc 文件读取。所有其他设置(如 hoistPatternnodeLinkershamefullyHoist 等)必须在 pnpm-workspace.yaml 或全局的 ~/.config/pnpm/config.yaml 中配置。

pnpm config 命令可用于读取和编辑项目与全局配置文件的内容。

相关的配置文件有:

配置文件中的值可以使用 ${NAME} 语法包含环境变量。环境变量也可以指定默认值。使用 ${NAME-fallback} 会在 NAME 未设置时返回 fallback${NAME:-fallback} 会在 NAME 未设置或为空字符串时返回 fallback

warning

自 v11.5.3 起,在 pnpm-workspace.yaml 中定义 registry URL 的设置里不会展开环境变量:registry,以及 registriesnamedRegistries 的 URL 值。这些设置中包含 ${...} 占位符的值会被忽略。在 registriesregistry 声明形式 中(自 v11.23.0 起),URL 是键而非值,同样的规则适用于键。由于 pnpm-workspace.yaml 会提交到仓库,在 registry URL 中展开环境变量可能会被恶意仓库利用,把环境中的机密泄露到攻击者控制的 registry。请改为在受信任的位置配置动态 registry URL:全局配置文件或 CLI 选项。

packages

除设置之外,pnpm-workspace.yaml 还定义了工作区的根,并让你能将目录纳入 / 排除出工作区。如果省略 packages 字段,则只有根包包含在工作区中。

例如:

pnpm-workspace.yaml

packages:
  # specify a package in a direct subdir of the root
  - 'my-app'
  # all packages in direct subdirs of packages/
  - 'packages/*'
  # all packages in subdirs of components/
  - 'components/**'
  # exclude packages that are inside test directories
  - '!**/test/**'

根包始终被纳入,即使使用了自定义位置通配符。

catalogs 也在 pnpm-workspace.yaml 文件中定义。详情见 Catalogs

pnpm-workspace.yaml

packages:
  - 'packages/*'

catalog:
  chalk: ^4.1.2

catalogs:
  react16:
    react: ^16.7.0
    react-dom: ^16.7.0
  react17:
    react: ^17.10.0
    react-dom: ^17.10.0

packageConfigs

自 v11.0.0 起提供

允许为各个工作区包设置项目专属的配置。这取代了工作区项目专属的 .npmrc 文件。

packageConfigs 可以指定为一个从包名到配置对象的映射:

pnpm-workspace.yaml

packages:
  - "packages/project-1"
  - "packages/project-2"
packageConfigs:
  "project-1":
    saveExact: true
  "project-2":
    savePrefix: "~"

或者作为一个由通配符匹配的规则数组:

pnpm-workspace.yaml

packages:
  - "packages/project-1"
  - "packages/project-2"
packageConfigs:
  - match: ["project-1", "project-2"]
    modulesDir: "node_modules"
    saveExact: true

设置

以下按主题分组列出每个设置。跟随某个设置可阅读其文档,或打开某个分组的完整参考。

依赖解析

Full reference →

node_modules 设置

Full reference →

依赖提升设置

Full reference →

存储设置

Full reference →

锁文件设置

Full reference →

网络设置

Full reference →

请求设置

Full reference →

对等依赖设置

Full reference →

CLI 设置

Full reference →

Node.js 设置

Full reference →

构建设置

Full reference →

版本策略设置

Full reference →

其他设置

Full reference →

工作区设置

这些设置同样在 pnpm-workspace.yaml 中配置,但与其所属的工作区特性一起文档化。

Full reference →

在其他处文档化的设置

本页内容译自pnpm 官方文档(MIT License),如有出入以英文原文为准。