首页 > 其他分享 >在使用 Yarn Workspaces 时,有业务包A和组件库包B,两个包分别引用了antd4 和antd5 三方包,安装依赖时该注意什么

在使用 Yarn Workspaces 时,有业务包A和组件库包B,两个包分别引用了antd4 和antd5 三方包,安装依赖时该注意什么

时间:2024-03-24 10:11:46浏览次数:27  
标签:Workspaces 时该 antd4 package json 引用 组件 库包

在使用 Yarn Workspaces 时,有业务包A和组件库包B,两个包分别引用了antd4 和antd5 三方包,安装依赖时该注意什么?

在使用 Yarn Workspaces 的项目中,如果有业务包 A 和组件库包 B,分别引用了 antd v4 和 antd v5 两个不同版本的三方包,安装依赖时需要注意以下几点:

  1. 版本隔离

    • 由于 antd v4 和 v5 可能存在不兼容的API更改,业务包 A 和组件库包 B 必须各自独立安装它们所依赖的 antd 版本。
    • Yarn Workspaces 支持在不同工作空间内安装不同的依赖版本,无需担心全局范围内的版本冲突。
  2. Workspace Configuration

    • 在根级别的 package.json 文件中,确保开启了 Workspaces,并且正确地包含了 A 和 B 两个包的路径:
      "workspaces": ["packages/A", "packages/B"]
      
    • 在 A 和 B 的 package.json 文件中,各自指定需要的 antd 版本:
      // 在 packages/A/package.json 中
      "dependencies": {
        "antd": "^4.0.0"
      }
      
      // 在 packages/B/package.json 中
      "dependencies": {
        "antd": "^5.0.0"
      }
      
  3. 运行安装命令

    • 在根目录下执行 yarn install,Yarn Workspaces 会自动为每个工作区安装相应的依赖版本,并将公共依赖扁平化至根目录的 node_modules 中,而每个工作区内的 node_modules 只包含私有依赖和与其它工作区版本不同的依赖
  4. 避免缓存问题

    • 如果之前全局缓存中有其他版本的 antd,确保清除或更新缓存,以确保正确安装所需版本:
      yarn cache clean
      yarn install
      
  5. 避免交叉引用

    • 确保业务包 A 和组件库包 B 在设计上不会互相引用对方内部的组件,以免造成版本间的间接冲突。

通过以上步骤,可以确保在使用 Yarn Workspaces 的情况下,业务包 A 和组件库包 B 能够各自独立维护和使用不同的 antd 版本。

如果A包需要引用B包,该如何设置?

如果业务包 A 需要引用组件库包 B,并且两者都在同一个 Yarn Workspaces 项目中,可以按照以下方式进行设置:

  1. 组织工作区结构

    • 确保组件库包 B 在项目结构中的正确位置,并在根 package.json 的 workspaces 字段中列出。
    // 根 package.json
    {
      "private": true,
      "workspaces": ["packages/*"],
      // ...其他配置
    }
    
    // 项目结构示例
    ├── packages/
    │   ├── A/
    │   │   └── package.json
    │   └── B/
    │       └── package.json
    └── package.json
    
  2. 发布和引用组件库 B

    • 在组件库包 B 中,确保你已将其导出为一个可复用的模块,并做好适当的构建和打包配置(如使用Rollup、Webpack等工具)。
    • 在完成开发和测试后,可以将 B 包发布到私有npm仓库或者暂存到本地,以便业务包 A 引用。
  3. 在业务包 A 中引用组件库 B

    • 在业务包 A 的 package.json 文件中,添加对组件库 B 的依赖引用。由于它们都在同一个 Workspaces 项目中,可以直接引用相对路径(本地开发时)或私有仓库地址(生产环境)。
    // 本地开发时引用
    // packages/A/package.json
    {
      "dependencies": {
        "my-component-library-b": "file:../B"
      }
    }
    
    // 或者在私有仓库中发布后引用
    // packages/A/package.json
    {
      "dependencies": {
        "my-component-library-b": "npm:my-private-registry/[email protected]"
      }
    }
    
  4. 安装和构建

    • 在项目根目录下运行 yarn install,Yarn Workspaces 会识别出依赖关系,并在合适的地方安装组件库 B。
    • 确保业务包 A 在构建时能正确编译和打包引用的组件库 B。

通过这样的配置,业务包 A 可以顺利地引用组件库包 B,并且在 Workspaces 环境下依然可以享受依赖管理和版本控制的优势。
同时,在发布业务包 A 的时候,确保组件库 B 已经发布到了合适的仓库,以便下游项目能够正常安装。

标签:Workspaces,时该,antd4,package,json,引用,组件,库包
From: https://www.cnblogs.com/longmo666/p/18092123

相关文章

  • 游戏被DDOS攻击无法访问时该如何处理
    游戏行业随着时代的发展有着突飞猛进的变化,尤其是互联网时代智能手机的普及,让游戏行业发展上了一个新的台阶。因为游戏带来的巨大利润,游戏行业一直是DDoS攻击的首选目标。DDoS是DistributedDenialofService的缩写,即分布式拒绝服务。简单来说是向服务器同时发布大量请求,让被攻击......
  • 掌握npm、yarn、pnpm的workspaces使用
    workspaces(工作区)是一个通用术语,它指的是从单个顶级根包中管理本地文件系统中的多个包。npm、yarn、pnpm都提供了对workspaces的支持,在使用上会有些微的不同,今天就分享一下这几个包管理器分别使用workspaces的方式前段时间写几个独立的组件,当时因为没考虑要做成啥样,就把de......
  • Amazon WorkSpaces 推出 Amazon WorkSpaces Web
    今天,我们宣布全面推出AmazonWorkSpacesWeb。WorkSpacesWeb是我们的最终用户计算套件中的一项新功能,它是一项低成本的完全托管式WorkSpace,专用于辅助基于Web的安全工作负载。WorkSpacesWeb使得客户能够轻松、安全地为其员工提供对内部网站和软件即服务Web应用程序的访......
  • Amazon WorkSpaces 现在提供使用 WorkSpaces 流协议(WSP)的 Web Access
    企业一直需要找到相应的方案,以快速让用户从任何地点和任何计算机进行工作,同时保证安全性和生产力。为了使用WorkSpaces流协议(WSP)简化AmazonWorkSpaces的部署,同时无需安装原生的客户端应用程序,用户现在可以在Windows、macOS或Linux计算机上通过受支持的Web浏览器访问A......
  • 【API接口工具】postman-Workspaces工作空间 VS Scratch Pad草稿面板
    ScratchPad是一个可以在未连接到Postman服务器的情况下工作的空间。当您未登录或没有网络连接时,您仍然可以离线访问某些Postman功能,例如创建集合和请求,或发送请求。ScratchPad中的所有工作都存储在本地,不会与Postman在线同步。在便笺簿中工作后,您可以稍后在登录后将工作移......
  • 修改pip配置文件pip.ini显示权限不足,无法写入时该如何解决
    如题,尝试修改pip配置pip3configsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple时出现如下报错: WritingtoC:\ProgramFiles\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\pip.iniERROR:Unabletosaveconfigura......
  • 当使用POI打开Excel文件遇到out of memory时该如何处理?
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。当我们开发处理Excel文件时,ApachePOI是许多人首选的工具。但是,随着需求的增加、工程复杂,在打开复杂的Excel文件的时候可能会出现一些异......
  • postman升级后无法加载workspaces
    退出账户后,点击设“置图标”--》settings-->关掉ssl验证,之后重新登录就可以了(别问为什么,我也不知道,网上找的方法) ......
  • 微信JS-SDK出现“invalid signature”的问题时该如何解决
    最近我在帮助前端生成微信JS-SDK分享签名时,遇到了一个问题,即wx.config初始化一直报invalidsignature的错误,我想总结一下我排查这个问题的过程。官方文档中已经说了详细介绍了排查过程,如下图所示: 校验工具校验签名过程首先我在微信提供的签名校验工具中比对了接口生成......
  • Antd4.x Modal使用destroyOnClose属性(关闭时销毁 Modal 里的子元素)后
    <Modal/>和Form一起配合使用时,设置destroyOnClose也不会在Modal关闭时销毁表单字段数据,需要设置<Formpreserve={false}/>例子<ModaldestroyOnClose><For......