目录结构
如何安装依赖并组织你的应用结构。
Monorepo仓库目录结构
本项目采用 Monorepo 架构,统一管理多个子项目和核心包。根目录结构如下:
.
├── apps/ # 应用主目录(包含 server、web、mobile、doc 等子项目)
│ ├── server/ # 服务端主应用
│ ├── web/ # 前端 Web 应用
│ ├── mobile/ # 移动端应用
│ └── doc/ # 文档站点
├── packages/ # 复用包与核心业务包
│ ├── utils/ # 工具库
│ ├── config/ # 配置相关包
│ ├── ui/ # UI 组件库
│ ├── designer/ # 设计器相关包
│ ├── http/ # HTTP 通信相关包
│ └── assets/ # 资源包
├── public/ # 公共静态资源
├── docker/ # Docker 相关配置与文档
├── .vscode/ # VSCode 编辑器配置
├── .turbo/ # Turbo 构建缓存
├── node_modules/ # 依赖包目录
├── .git/ # Git 版本控制目录
├── .env* # 环境变量配置文件(多环境)
├── pnpm-workspace.yaml # pnpm 工作区配置
├── package.json # 根包管理配置
├── turbo.json # Turbo 构建工具配置
├── docker-compose.yml # Docker Compose 配置
├── README.md # 项目说明文档(英文)
├── README.zh-CN.md # 项目说明文档(中文)
├── LICENSE # 许可证
├── tsconfig.json # TypeScript 配置
├── .editorconfig # 编辑器配置
├── .prettierignore # Prettier 忽略文件
├── prettier.config.mjs # Prettier 配置
├── .npmrc # npm 配置
├── .gitignore # Git 忽略文件
└── ... # 其他配置文件
目录说明
- apps/:存放各个独立运行的应用(如服务端、前端、移动端、文档等)。
- packages/:存放可被多个应用复用的业务包、工具包、UI组件等。
- public/:公共静态资源目录。
- docker/:Docker 相关配置与文档。
- .vscode/、.turbo/、node_modules/、.git/:开发、构建、依赖与版本控制相关目录。
- .env*:环境变量配置文件,支持多环境(开发、生产、测试)。
- pnpm-workspace.yaml:pnpm 工作区配置文件,管理多包依赖。
- package.json、turbo.json、tsconfig.json 等:项目根配置文件。
- README.md、README.zh-CN.md:项目说明文档(中英文)。
- LICENSE:开源许可证。
子项目目录结构
1. apps/server/ - 服务端应用
基于 NestJS 框架的后端应用,提供 API 服务和业务逻辑处理。
apps/server/
├── src/ # 源代码目录
│ ├── main.ts # 应用入口文件
│ ├── core/ # 核心功能模块(缓存、数据库、权限等)
│ ├── common/ # 通用组件(装饰器、过滤器、拦截器等)
│ ├── modules/ # 业务模块
│ │ ├── app.module.ts # 根模块
│ │ ├── console/ # 后台管理 API 模块
│ │ └── web/ # 前台用户 API 模块
│ ├── plugins/ # 插件系统
│ └── assets/ # 静态资源
├── libs/ # 共享库
├── test/ # 测试文件
├── docs/ # 文档
├── dist/ # 构建输出目录
├── storage/ # 文件存储目录
├── package.json # 依赖配置
├── tsconfig.json # TypeScript 配置
├── nest-cli.json # NestJS CLI 配置
└── .swcrc # SWC 编译配置
2. apps/web/ - 前端 Web 应用
基于 Nuxt.js 框架的前端应用,提供用户界面和交互功能。
apps/web/
├── .nuxt/ # Nuxt 构建缓存
├── .output/ # 构建输出
├── app/ # 页面组件
├── assets/ # 静态资源(CSS、图片等)
├── common/ # 通用模块(组件,hooks,通用数据等)
│ ├── components/ # 组件
│ ├── composables/ # 根模块
│ ├── config/ # 公共配置文件
│ ├── constants/ # 项目常量定义
│ ├── utils/ # 工具函数
├── core/ # 核心功能模块(nuxt vue 核心模块)
│ ├── directives/ # vue 指令
│ ├── i18n/ # 国际化相关
│ ├── layouts/ # nuxt 布局
│ ├── middleware # nuxt 中间件
│ ├── modules # nuxt 模块
│ ├── plugins # nuxt 插件
│ ├── stores # Pinia存储
├── libs/ # 共享库
├── models/ # 数据模型定义
├── plugins/ # 插件系统
├── public/ # 前端公共静态资源
├── server/ # nuxt 服务端应用
├── services/ # API 服务层
├── types/ # TypeScript 类型定义
├── app.vue # 根组件
├── nuxt.config.ts # Nuxt 配置
├── app.config.ts # 应用配置
└── package.json # 依赖配置
3. apps/mobile/ - 移动端应用
基于 uni-app/Vite 框架的移动端应用,支持多平台部署。
apps/mobile/
├── src/ # 源代码目录
│ ├── pages/ # 页面组件
│ ├── components/ # 公共组件
│ ├── utils/ # 工具函数
│ ├── api/ # API 接口
│ ├── store/ # 状态管理
│ ├── static/ # 静态资源
│ └── styles/ # 样式文件
├── index.html # 入口 HTML
├── vite.config.ts # Vite 配置
├── package.json # 依赖配置
└── tsconfig.json # TypeScript 配置
4. apps/doc/ - 文档站点
基于 Next.js + Fumadocs 的文档站点,提供项目文档和API参考。
apps/doc/
├── app/ # Next.js App Router 页面
├── docs/ # Markdown 文档文件
├── components/ # 文档组件
├── styles/ # 样式文件
├── public/ # 公共静态文件
├── lib/ # 工具库
├── hooks/ # React Hooks
├── types/ # TypeScript 类型
├── locales/ # 国际化文件
├── .next/ # Next.js 构建缓存
├── next.config.mjs # Next.js 配置
├── source.config.ts # Fumadocs 配置
├── mdx-components.tsx # MDX 组件配置
└── package.json # 依赖配置
5. packages/ - 复用包与核心业务包
packages/
目录用于存放可被多个应用(如 server、web、mobile 等)复用的工具库、UI 组件、配置、资源等核心包,便于代码共享和统一维护。
packages/
├── utils/ # 通用工具库
│ ├── lib/ # 构建产物与类型声明
│ ├── scripts/ # 构建/发布脚本
│ ├── src/ # 源码目录
│ │ ├── index.ts # 工具库主入口
│ │ └── parse-package-name.ts # 包名解析工具
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── config/ # 配置相关包
│ ├── eslint/ # ESLint 相关配置
│ │ ├── base.js # 基础 ESLint 配置
│ │ └── http.js # HTTP 相关 ESLint 配置
│ ├── typescript/ # TypeScript 相关配置
│ │ └── base.json # 基础 TS 配置
│ ├── ui/ # UI 相关配置
│ │ └── table.js # 表格 UI 配置
│ ├── package.json # 包配置
│ └── ...
├── ui/ # 通用 UI 组件库
│ ├── src/ # 组件源码
│ │ ├── components/ # 具体组件(如 pro-modal、pro-uploader 等)
│ │ ├── composables/# 组合式函数
│ │ ├── utils/ # 工具函数
│ │ ├── styles/ # 样式文件(全局
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── designer/ # 设计器相关包
│ ├── src/ # 设计器源码
│ │ ├── components/ # 设计器专用组件
│ │ ├── composables/# 组合式函数
│ │ ├── utils/ # 工具函数
│ │ ├── stores/ # 状态管理
│ │ ├── types/ # 类型定义
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── http/ # HTTP 通信相关包
│ ├── src/ # 源码目录
│ │ ├── index.ts # 主入口
│ │ ├── types.ts # 类型定义
│ │ └── constants.ts# 常量定义
│ ├── test/ # 测试用例
│ │ ├── http-test.js
│ │ └── interceptor.test.ts
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── assets/ # 资源包
│ ├── images/ # 图片资源
│ │ ├── files/ # 文件类型图标
│ │ ├── favicon.ico # 网站图标
│ │ └── logo.png # 项目 Logo
│ ├── shims-image.d.ts# 图片类型声明
│ ├── package.json # 包配置
│ └── tsconfig.json # TypeScript 配置
└── ... # 其他可复用包
目录说明
- utils/:存放通用工具函数,便于各端复用。
- config/:存放各类配置文件和类型定义,支持多端统一配置。
- ui/:自研或三方封装的 UI 组件库,统一前端视觉和交互风格。
- designer/:低代码、可视化设计器相关的核心包。
- http/:HTTP 请求、拦截器、API 通信相关的封装。
- assets/:图片、图标、字体等静态资源包,供各端统一引用。
所有包均建议采用独立的
package.json
进行依赖管理,支持按需构建和发布。
插件系统目录结构
项目支持插件化开发,插件分为服务端插件和前端插件两部分,实现功能的模块化扩展。
1. 服务端插件目录结构
服务端插件位于 apps/server/src/plugins/
目录下,每个插件为独立目录。
apps/server/src/plugins/[plugin-name]/
├── package.json # 插件包配置信息
├── plugin-main.module.ts # 插件主模块入口
├── install/ # 插件安装配置
├── entities/ # 数据库实体定义
├── modules/ # 业务模块
│ ├── console/ # 后台管理模块
│ └── web/ # 前台用户模块
├── services/ # 业务服务层
├── controllers/ # 控制器
├── dto/ # 数据传输对象
├── guards/ # 权限守卫
├── decorators/ # 自定义装饰器
└── utils/ # 工具函数
2. 前端插件目录结构
前端插件位于 apps/web/plugins/
目录下,每个插件为独立目录。
apps/web/plugins/[plugin-name]/
├── package.json # 插件包配置信息
├── index.ts # 插件入口文件
├── README.md # 插件说明文档
├── app/ # 页面组件
│ ├── console/ # 后台管理页面
│ └── ***/ # 前台用户页面
├── models/ # 数据模型定义
├── services/ # API 服务层
├── components/ # 插件组件
├── composables/ # 组合式函数
├── i18n/ # 国际化文件
├── types/ # TypeScript 类型定义
└── utils/ # 工具函数
3. 插件功能说明
- 服务端插件:提供后端 API 接口、数据库操作、业务逻辑处理等功能
- 前端插件:提供用户界面、交互功能、页面路由、状态管理等功能
- 插件独立性:每个插件拥有独立的包配置、依赖管理和功能模块
- 插件集成:插件通过统一的注册机制集成到主应用中
- 模块化开发:支持插件的独立开发、测试和部署
- 扩展性:通过插件系统实现功能的灵活扩展和定制化