pnpm9.5.0(catalog协议)

catalog(目录协议)

目录是工作区功能,用于将依赖版本范围定义为可重用常量,目录中定义的常量可以在package.json中使用,

结合 pnpm-workspace.yaml使用

  • 定义pnpm-workspace.yaml
    packages:定义多仓库
javascript 复制代码
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

这里有两种方式定义 catalog

  • catalog

普通定义,一一对应,默认值为default

javascript 复制代码
// pnpm-workspace.yaml
catalog:
  chalk: ^4.1.2
javascript 复制代码
// packages/app/package.json
{
  "name": "app",
  "dependencies": {
    "chalk": "catalog:"
  }
}
  • catalogs

具名,将多个catalog整合成一个catalogs

javascript 复制代码
// pnpm-workspace.yaml
catalogs:
  react16:
    react: ^16.7.0
    react-dom: ^16.7.0
  react17:
    react: ^17.10.0
    react-dom: ^17.10.0
javascript 复制代码
// packages/app/package.json
{
  "name": "app",
  "dependencies": {
    "react": "catalog:react18",
    "react-dom": "catalog:react18"
  }
}

优点

monorepo或多包存储库中,许多包是有相同依赖的。目录减少了 package.json文件时的重复,并提供以下好处

  • 维护唯一版本

工作区中最好只有一个版本的依赖项。目录使维护更容易。重复的依赖项可能会在运行时发生冲突并导致错误。

  • 升级简单

升级依赖时,只需要编辑目录,而不用修改各个包中的package.json

  • 更少的合并冲突

由于依赖项变动不需要编辑package.json,这类文件导致的冲突将最小化

运行与发布

在运行时,catalog协议会被删除,发布时会被替换成对应版本

注意事项

使用pnpm update并不能更新pnpm-workspace.yaml依赖项,需要手动选择。

相关推荐
MonkeyKing_sunyuhua8 小时前
npm WARN EBADENGINE required: { node: ‘>=14‘ }
前端·npm·node.js
赵啸林14 小时前
npm 安装 pnpm 的详细步骤及注意事项
前端·npm·node.js
喆星时瑜14 小时前
npm 命令使用文档
前端·npm·node.js
斯~内克17 小时前
解密 `npm run dev`:从命令行到浏览器热更新的完整旅程
前端·npm
喆星时瑜19 小时前
pnpm 命令使用文档
前端·npm·node.js
腥臭腐朽的日子熠熠生辉1 天前
nvm 安装某个node.js版本后不能使用或者报错,或不能使用npm的问题
前端·npm·node.js
uglyduckling04122 天前
小程序构建NPM失败
前端·小程序·npm
伟笑2 天前
npm 报错 unable to resolve dependency tree
前端·npm·node.js
大波V53 天前
mac npm run dev报错 error:0308010C:digital envelope routines::unsupported
前端·macos·npm
A Everyman3 天前
【npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree】
前端·npm·node.js·error