大中厂都在用monorepo工程管理你掌握了吗?monorepo如何统一工程规范【渡一教育】_哔哩哔哩_bilibili
这个视频讲解了monorepo和multirepo的区别
使用pnpm构建monorepo项目
凡是对子包做统一处理的地方,全在根工程中完成
配置统一ts配置,并在子包里写具体配置
配置代码风格和质量检查、git提交规范
大中厂都在用monorepo工程管理你掌握了吗?monorepo如何对子包进行打包、依赖、测试、发布【渡一教育】_哔哩哔哩_bilibili
统一打包
monorepo架构概念
6.Monorepo架构概念与优势对比_哔哩哔哩_bilibili
polyrepo也就是multirepo

前端架构师进阶:从零搭建 pnpm + Turborepo 高效 Monorepo 架构指南
1. 传统 Multi-repo 的痛点
假设你维护着 Admin(后台)和 H5(移动端)两个项目,它们都使用同一套 UI 库。
- 代码复用难: 修改 UI 库后,需要
publish->install才能在业务项目中生效,调试流程漫长。 - 依赖版本混乱:
Admin使用 React 16,H5使用 React 18,长期迭代导致技术栈割裂。 - 基建重复: 每个仓库都需要单独配置 ESLint、Prettier、Webpack/Vite,维护成本随项目数量线性增长。
2. Monorepo 的优势
Monorepo 将多个逻辑独立的项目管理在同一个 Git 仓库中。
- 统一工作流: 一个命令启动所有项目,一个 Commit 完成跨项目修改。
- 依赖原子化: 源码级引用共享库,修改即时生效,无需发包。
- 统一依赖管理: 强制所有项目使用相同版本的核心库(如 React、Vue),避免依赖地狱。
案例

技术选型(pnpm+turbo)
7.现代前端工程化技术选型:PNPM + Turbo_哔哩哔哩_bilibili
为什么选pnpm

编排工具turborepo

monorepo目录树
搭建
安装 | Turborepo - Turborepo 构建系统
官网
项目初始化
8.基于Monorepo的AI项目架构设计_哔哩哔哩_bilibili
项目结构搭建
应用层子包放在apps/下,内部子包放在packages下
这个desktop是桌面应用、server是后端服务、web是web前端应用
自由编排,我看视频里是apps/下是frontend/和backend/再编排的

初始化 package.json
pnpm init
随便在一个包初始化,然后复制粘贴,再修改name
既然是子包,我们都会把最外层的那个包作为一个集中的名称

ts
pnpm add typescript -D
npx tsc --init
类型系统与模块导入
先定义所需向外部导出的功能模块

定义入口
把入口文件向外部暴露


手动写上,然后pnpm i安装
后面就能使用了

在 Node.js 中,有两种模块标准:
- CommonJS (CJS):使用 require() 和 module.exports。这是 Node.js 的传统标准
- ECMAScript Modules (ESM):使用 import 和 export。这是现代 JS 的标准
当在 package.json 中只写了 "main": "index.js" 时,Node.js 默认会将这个 index.js 当作 CommonJS 模块来处理(除非你在 package.json 中显式声明 "type": "module")
通过软链的方式引用,然后安装

后端多模块
Java Maven 多模块 vs 前端 Monorepo
结构差异
Java Maven 多模块(当前项目):
box-im/
├── pom.xml # 父项目配置
├── im-platform/ # 业务服务模块
├── im-server/ # 消息服务模块
├── im-client/ # SDK模块
├── im-common/ # 公共模块
├── im-web/ # Vue.js前端
└── im-uniapp/ # 移动端应用
前端 Monorepo(你提到的类型):
project/
├── apps/ # 应用程序
├── packages/ # 共享包
└── tools/ # 工具
为什么采用 Maven 多模块
-
Java 生态标准:Maven 是 Java 项目的标准构建工具,多模块是其内置功能
-
依赖管理:通过 Maven 统一管理版本和依赖关系
技术栈决定架构
这个项目包含:
- 后端 Java 服务:使用 Maven 管理
- 前端应用:Vue.js 和 UniApp,独立目录但同仓库
混合技术栈的 monorepo 通常会采用各自生态的最佳实践,而不是强求统一的目录结构
