目录结构

如何安装依赖并组织你的应用结构。

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.jsonturbo.jsontsconfig.json 等:项目根配置文件。
  • README.mdREADME.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 接口、数据库操作、业务逻辑处理等功能
  • 前端插件:提供用户界面、交互功能、页面路由、状态管理等功能
  • 插件独立性:每个插件拥有独立的包配置、依赖管理和功能模块
  • 插件集成:插件通过统一的注册机制集成到主应用中
  • 模块化开发:支持插件的独立开发、测试和部署
  • 扩展性:通过插件系统实现功能的灵活扩展和定制化