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

相关推荐
2301_8187320619 小时前
安装了node,但是cmd找不到node和npm,idea项目也运行失败 已解决
前端·npm·node.js
Sapphire~1 天前
odoo-087 安装 npm (node ok npm not)
linux·运维·npm
Benny的老巢1 天前
【n8n工作流入门02】macOS安装n8n保姆级教程:Homebrew与npm两种方式详解
macos·npm·node.js·n8n·n8n工作流·homwbrew·n8n安装
2301_818732061 天前
下载nvm后,通过nvm无法下载node,有文件夹但是为空 全局cmd,查不到node和npm 已解决
前端·npm·node.js
稀饭522 天前
用changeset来管理你的npm包版本
前端·npm
就知道你是成心的2 天前
npm pack 一键构建npm离线包
npm
GuMoYu2 天前
npm link 测试本地依赖完整指南
前端·npm
爱写程序的小高3 天前
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
前端·npm·node.js
程序员的程3 天前
我做了一个前端股票行情 SDK:stock-sdk(浏览器和 Node 都能跑)
前端·npm·github
爱写程序的小高3 天前
npm版本降级、nvm切换node版本、webpack版本与vue版本不一致
前端·npm·node.js