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依赖项,需要手动选择。

相关推荐
墨菲安全12 小时前
SHA1HULUD蠕虫再现:超300NPM包被投毒、 2万仓库信息被窃取
npm·软件供应链安全·npm组件投毒
爱吃无爪鱼12 小时前
07-常用的前端开发组合(技术栈):配方大全
前端·vue.js·前端框架·npm·node.js·sass
珑墨1 天前
【包管理器】pnpm、npm、cnpm、yarn 深度对比
前端·javascript·npm·node.js
爱吃无爪鱼1 天前
03-Bun vs Node.js:JavaScript 运行时的新旧之争
javascript·vue.js·react.js·npm·node.js
爱吃无爪鱼1 天前
01-前端开发快速入门路线图
javascript·css·vue.js·typescript·前端框架·npm·node.js
思密吗喽1 天前
npm install 报错,解决 node-sass@4.14.1 安装失败问题
rust·npm·node.js·毕业设计·sass·课程设计
FreeBuf_1 天前
恶意npm包利用隐藏提示和脚本规避AI安全工具检测
人工智能·安全·npm
Larry_zhang双栖1 天前
解决 Figma MCP 下载图片卡死问题:从踩坑到自研 npm 工具全记录
前端·npm·figma
ByteCraze1 天前
CDN 引入 与 npm 引入的区别
前端·npm·node.js