vue.js monorepo 架构通过 packages 目录实现模块化拆分:1、基础模块(shared/core/components/theme);2、业务模块(auth/order/reporting/notification);3、工程模块(build-config/eslint-config/docs/playground);4、依赖约束由 pnpm workspace 管理,确保引用清晰可控。

一、理解 Vue.js Monorepo 架构本质
如果您正在规划一个中大型 Vue 前端项目,但面临组件复用困难、跨项目同步低效、依赖版本不一致等问题,则很可能是单体仓库结构已无法支撑当前协作与演进需求。Vue.js 官方源码本身即采用 Monorepo 架构,将响应式系统、运行时核心、模板编译器等能力解耦为独立可维护的包。以下是具体模块拆分与架构设计实践:
二、基于 packages 目录的标准模块划分
该方案以 Vue 3 源码为范本,通过 packages/ 目录统一封装高内聚、低耦合的功能单元,每个子包具备独立构建、测试与发布能力。
1、在项目根目录创建 packages/ 文件夹。
2、在 packages/ 下新建 shared/ 子目录,用于存放类型定义、工具函数、常量枚举等跨包通用逻辑。
3、新建 core/ 子目录,封装 Vue 组合式 API 扩展、自定义 Hook 集合及基础状态管理抽象。
4、新建 components/ 子目录,作为 UI 组件库主包,按功能域组织(如 form/、layout/、data-display/)。
5、新建 theme/ 子目录,提供 CSS 变量注入、暗色模式切换、主题配置 Schema 等样式层抽象。
三、面向业务场景的垂直模块拆分
该方案聚焦于多前端应用共存的企业级场景,将业务能力沉淀为可插拔的领域包,避免 UI 层与业务逻辑强耦合。
1、在 packages/ 下新建 auth/ 包,封装登录态管理、Token 刷新、权限指令(v-permission)及 RBAC 权限校验逻辑。
2、新建 order/ 包,定义订单状态机、订单查询 Hook、下单表单 Schema 及订单卡片组件,供后台系统与小程序共享。
3、新建 reporting/ 包,提供数据看板基础容器、图表配置 DSL、导出工具链及指标计算原子函数。
4、新建 notification/ 包,统一消息中心接口适配、WebSocket 连接管理、离线缓存策略及通知气泡组件。
四、基础设施与工程化模块分离
该方案将构建、文档、测试等非业务能力从应用代码中剥离,形成可复用的工程支撑体系,保障各业务包构建一致性与可观测性。
1、在 packages/ 下新建 build-config/ 包,导出 Vite 公共配置对象、Rollup 插件集合及 TypeScript 编译选项。
2、新建 eslint-config/ 包,发布 ESLint 共享配置,包含 Vue 特定规则、TypeScript 规则及团队约定规范。
3、新建 docs/ 包,使用 VitePress 构建文档站点,自动聚合各业务包的 README.md 与组件 API 表。
4、新建 playground/ 包,集成在线编辑器(如 Monaco Editor),支持实时预览 components/ 与 auth/ 等包的使用示例。
五、依赖关系与引用约束设计
该方案通过 pnpm workspace 的硬链接机制与依赖层级限制,确保模块间引用清晰可控,防止循环依赖与意外透传。
1、在根目录 package.json 中声明 "workspaces": ["packages/*"]。
2、在 shared/ 的 package.json 中设置 "private": true,禁止直接发布。
3、在 components/ 的 package.json 中通过 "dependencies" 显式声明对 shared/ 和 core/ 的引用。
4、在 apps/admin/(应用层)中仅允许引用 components/、auth/、order/,禁止直接导入 shared/ 内部路径。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











