overrides 字段允许强制指定依赖图中任意包的版本,包括传递依赖和对等依赖。该字段只能在项目根目录的 pnpm-workspace.yaml 中设置(pnpm v11 起不再读取 package.json 的 pnpm 字段)。例如 "overrides": {"lodash": "^4.17.21"} 会将整个依赖树中的 lodash 统一锁定到指定版本,用于修复安全漏洞或统一版本。
可通过 > 分隔符限定覆盖的作用范围,如 "foo@1>bar": "2" 表示仅覆盖 foo@1 所依赖的 bar,不影响其他包。若需移除某依赖的可选依赖项以减小安装体积,可使用 "-" 作为值,如 "foo@1.0.0>bar": "-" 会从 foo@1.0.0 的依赖中移除 bar。
pnpm v11.13.0 引入收敛覆盖(convergence override),通过空范围选择器(如 "form-data@")仅在依赖声明的版本范围允许时统一版本,避免强制不兼容版本。packageExtensions 字段则用于扩展包的元数据,如为缺少对等依赖声明的包补充 peerDependencies,无需修改包本身即可修复生态中的兼容性问题。