Monorepo 单一代码库
Monorepo 单一代码库
问题
一般项目是独立创库管理(既:多代码库multirepos
),一些基础的组件、工具函数,或者一些配置项会在多个项目中重复使用,除了copy
一份之外,就是将依赖发布为一个npm
包,当依赖项发生修改时,需要重新发布npm
包,当修改频繁时,这种方式就显得尤为繁琐。
单一代码库
monorepo
单一代码库,既所有项目都在同一个仓库中,共享依赖。
yarn workspaces[1]
基本概念
workspace-root
:工作区根目录,存放所有依赖项。workspace
:工作区目录,存放单个项目。
配置
在workspace-root
下package.json
文件添加一下内容。
// package.json
{
...
// 因为根目录包含特定的业务代码,与其它项目共享无意义,所以官方将次包置为私有,以保证不会发布出去
"private": true,
// 项目目录
"workspaces": [ "packageA", "packageB" ],
// 当项目存放在同一个目录时,可以采用全目录引用的方式
"workspaces": [ "packages/*" ],
}
在workspace-root
下执行yarn
安装依赖。
请注意,workspace
没有自己的 yarn.lock 文件,workspace-root
yarn.lock 包含所有工作区的所有依赖项。
依赖管理
# 在工作区根目录安装
yarn -W add [package]
# 在指定工作目录安装
yarn workspace [workspaceName] add [package]
运行
# 运行指定项目指令
yarn workspace a run dev
# 运行所有项目指令
yarn workspaces run dev
请注意,yarn workspaces run dev
是串行的,意味着开发模式第一个起来服务会阻塞之后的的命令。
可以使用npm-run-all
[2]并行执行命令,在 worksapce-root 中安装。
yarn -W add npm-run-all
在workspace-root
下package.json
增加如下配置。
"scripts": {
"dev": "npm-run-all -p dev:*",
"dev:a": "yarn workspace a run dev",
"dev:b": "yarn workspace b run dev",
"dev:c": "yarn workspace c run dev"
},
运行yarn run dev
即可启动所有项目。
官方文档 yarn workspaces https://classic.yarnpkg.com/en/docs/workspaces ↩︎
官方文档 npm-run-all https://github.com/mysticatea/npm-run-all/blob/master/docs/npm-run-all.md ↩︎
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)