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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值