基于monorepo架构的全栈开发方案
背景
为了让前端开发人员能够做到全栈开发,我们基于koa做了一套后端业务开发框架,同时我们还有一套基于vue的前端业务开发框架。
当前的开发工作流

问题
- 代码在一个代码库中,但是是两个项目。
- 每个项目独立安装依赖,运行项目,构建项目,做两份体力活。
- 无法做到端到端的类型检查,导致类型不一致的问题。
- 无法做到统一的代码规范,导致代码风格不一致。
- 无法做到代码共享,导致重复造轮子。
- 开发效率低下。
目标
- 统一的开发环境。
- 统一的代码规范。
- 统一的依赖管理。
- 代码共享。
- 统一的构建和运行命令。
- 简化的开发工作流。
- 更高的开发效率。
- 端到端的类型检查。
方案
基于monorepo架构,使用npm作为包管理工具,统一前后端的开发环境和工作流。
前提
- npm: 全称为 Node Package Manager,是 Node.js 的包管理工具,用于安装、更新和管理 JavaScript 代码包。
- package: 由 package.json 文件描述的文件或目录。
- package.json: npm 包的元数据文件,描述了包的名称、版本、依赖等信息。
- npm workspace: npm 7.24.2(目前 11.6.4) 版本引入的功能,允许在一个代码仓库中管理多个 npm 包,提供了统一的依赖管理、构建和运行命令。
什么是 Monorepo?
Monorepo 是单代码仓库管理多项目 / 包的架构,简单说就是把多个关联的 npm 包(如工具库、业务模块、前端应用)放在同一个 Git 仓库中管理,而非每个包单独建仓。对 npm 生态而言,它能高效解决多包依赖管理、版本同步、代码复用等痛点。
架构

未来的开发工作流

工期
- 架构设计:1周
- 技术实现:1周