当前位置: 首页 > news >正文

yarn workspace使用指南

作用

Yarn workspace 是 Yarn 包管理工具中的一个功能,主要用于管理多包项目(monorepo)。它的主要作用如下:

  1. 支持多包结构:允许在一个仓库中管理多个独立的包或项目。
  2. 项目间依赖管理:方便地在不同包之间添加依赖,无需发布到npm。
  3. 统一依赖管理:所有包共享同一 yarn.lock,确保依赖版本一致。
  4. 独立开发环境:每个包可以独立运行命令,如安装依赖或构建。
  5. 环境隔离:避免不同包间的依赖冲突。
  6. 版本控制:在单个仓库中管理所有包的版本。

使用方法

  1. 创建workspace,项目名为workspace-root,然后生成package.json
mkdir workspace-root
cd workspace-root
yarn init -y //初始化项目,生成package.json
  1. workspace项目必须声明私有,避免被发布
{// ...config"private": true,
}
  1. 新建packages目录,用于存放项目

  1. 在packages目录下创建两个项目,并生成package.json,如two、one

  1. 在two和one项目的package.json文件中声明name属性,该属性值即为workspace的名称,如:
{"name": "one", // workspace的名称"version": "1.0.0","main": "index.js","license": "MIT",
}
  1. 在workspace-root目录下的package.js中声明哪些项目是workspace,"workspaces":["packages/*"]表示packages目录下的所有项目都是workspace
{"name": "workspace-root","version": "1.0.0","main": "index.js","license": "MIT","private": true,"workspaces": ["packages/*"]
}

指令

  1. yarn install:安装所有依赖,在workspace-root目录下和one/two目录下执行作用是一致的
  2. yarn workspace [workspace名称(package.json中的name)] add [依赖名称]:给项目添加依赖
yarn workspace one add dayjs
  1. yarn workspace [workspace名称(package.json中的name)] remove [依赖名称]:移除项目依赖
yarn workspace one remove dayjs
  1. yarn workspaces run <command>:在每个workspace下执行
yarn workspaces run dev
  1. yarn workspaces info [--json]:显示当前各workspace之间的依赖关系

注意事项

  1. 某个workspace不需要受yarn workspace管理,怎么办?

在workspace目录下添加.yarnrc文件, 并在文件中添加禁用指令

workspaces-experimental false

  1. 如果多个项目中依赖项目但版本不同时,怎么办?

注意:一般情况下two、one目录下并没有node_modules目录,如果two、one中依赖的版本不同时才可能会有

方式一:workspace-root中的node_modules下载的是dayjs@1.11.12,在one中使用的是dayjs@1.11.13,two使用的是dayjs@1.11.12

# one 项目
yarn workspace one add dayjs@^1.11.13
# two 项目
yarn workspace two add dayjs@^1.11.12

方式二:workspace-root中的node_modules下载的是dayjs@1.11.12,在one中使用的是在one/node_modules目录下下载的dayjs@1.11.13,two使用的是dayjs@1.11.12(workspace-root/node_modules):

# one 项目
yarn workspace one add dayjs@1.11.13
# two 项目
yarn workspace two add dayjs@1.11.12

相关文章:

  • 精品可编辑PPT | 全面风险管理信息系统项目建设风控一体化标准方案
  • 数据库实验报告 SQL SERVER 2008的基本操作 1
  • 企业对数据集成工具的需求及 ETL 工具工作原理详解
  • 一键生成达梦、Oracle、MySQL 数据库 ER 图!解锁高效数据库设计!
  • 《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》
  • PostgreSQL 序列(Sequence) 与 Oracle 序列对比
  • springboot集成langchain4j实现票务助手实战
  • 视觉-语言-动作模型:概念、进展、应用与挑战(上)
  • 基于Django和机器学习实现的中风预测系统
  • web 自动化之 selenium 下拉鼠标键盘文件上传
  • 【Linux网络编程】HTTPS协议原理
  • MySQL全量,增量备份与恢复
  • PTA:jmu-ds-最短路径
  • vue3+dhtmlx-gantt实现甘特图展示
  • 前端项目2-01:个人简介页面
  • 使用 DMM 测试 TDR
  • openpi π₀ 项目部署运行逻辑(一)——综述
  • WebGIS开发新突破:揭秘未来地理信息系统的神秘面纱
  • OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——gnutls
  • Linux512 ssh免密登录 ssh配置回顾
  • 飙升至熔断,巴基斯坦股市两大股指收盘涨逾9%
  • 法院就“行人相撞案”道歉:执法公正,普法莫拉开“距离”
  • 重庆荣昌出圈背后:把网络流量变成经济发展的增量
  • 中华人民共和国和俄罗斯联邦在纪念中国人民抗日战争、苏联伟大卫国战争胜利和联合国成立80周年之际关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明
  • 印巴冲突升级,巴基斯坦股市重挫7.29%,创5年来最大单日跌幅
  • 越秀地产前4个月销售额约411.2亿元,达年度销售目标的34.1%