• pnpm9.5.0(catalog协议)


    catalog(目录协议)

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

    • 定义pnpm-workspace.yaml
      packages:定义多仓库
      在这里插入图片描述
    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

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

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

    // pnpm-workspace.yaml
    catalogs:
      react16:
        react: ^16.7.0
        react-dom: ^16.7.0
      react17:
        react: ^17.10.0
        react-dom: ^17.10.0
    
    // 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依赖项,需要手动选择。

  • 相关阅读:
    【软件与系统安全笔记】六、恶意代码的机理及其防护
    搭建自己的文件服务器
    1076 Forwards on Weibo
    vue router
    华为云云耀云服务器L实例评测 | 实例使用教学之综合导览
    微信小程序登录
    来阿里一年后我迎来了第一次工作变动....
    【软考架构】2022年架构案例问题总结
    Workerman开启ssl方法如下
    学院打卡第十天
  • 原文地址:https://blog.csdn.net/smznbhh/article/details/140383643