vben-project-structure.mdc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. ---
  2. description: 项目结构概览
  3. globs:
  4. alwaysApply: false
  5. ---
  6. # Vben 项目结构概览
  7. Vben 项目采用 Monorepo 架构,使用 pnpm workspaces 和 Turborepo 进行管理。
  8. ## 顶层重要文件和目录
  9. - **[pnpm-workspace.yaml](mdc:pnpm-workspace.yaml)**: 定义 pnpm workspaces,声明了哪些目录是包 (packages)。
  10. - **[turbo.json](mdc:turbo.json)**: Turborepo 配置文件,用于定义任务流水线和缓存策略。
  11. - **[package.json](mdc:package.json)**: 项目根目录的 `package.json`,包含顶层脚本和依赖。
  12. - **`apps/`**: 存放各个应用程序 (workspaces),例如 `web-ele`、`web-antd` 等。
  13. - 例如: [apps/web-ele/](mdc:apps/web-ele) (Element Plus 版本的应用)
  14. - **`packages/`**: 存放共享的包和库 (workspaces),这些包可以被 `apps/` 中的应用或其他 `packages/` 中的包复用。
  15. - **`@core/`**: [packages/@core/](mdc:packages/@core) - 包含核心的基础组件、工具函数、类型定义等。
  16. - **`effects/`**: [packages/effects/](mdc:packages/effects) - 包含与UI框架无关的通用效果、布局、插件等。
  17. - 其他如 `constants/`, `icons/`, `locales/`, `stores/`, `styles/`, `types/`, `utils/` 等也是共享包。
  18. - **`internal/`**: 存放项目内部使用的配置和脚本,不作为发布的包。
  19. - **`lint-configs/`**: [internal/lint-configs/](mdc:internal/lint-configs) - 集中管理 ESLint, Stylelint, Prettier 等代码规范工具的配置。
  20. - **`tsconfig/`**: [internal/tsconfig/](mdc:internal/tsconfig) - 共享的 TypeScript 配置文件。
  21. - **`vite-config/`**: [internal/vite-config/](mdc:internal/vite-config) - 共享的 Vite 配置。
  22. - **`scripts/`**: [scripts/](mdc:scripts) - 存放项目级别的脚本,如 `vsh` 和 `turbo-run`。
  23. ## 应用 (Apps)
  24. 位于 `apps/` 目录下,每个子目录代表一个可独立运行或构建的应用。例如,`apps/web-ele` 是基于 Element Plus 的前端应用。
  25. 其典型结构可能包含:
  26. - `src/`: 源代码目录。
  27. - `api/`: API 请求模块。
  28. - `router/`: 路由配置。
  29. - `store/`:状态管理 (如 Pinia)。
  30. - `views/`: 页面组件。
  31. - `main.ts`: 应用入口文件。
  32. - `public/`: 静态资源。
  33. - `index.html`: HTML 入口文件。
  34. - `vite.config.ts`: Vite 配置文件。
  35. ## 包 (Packages)
  36. 位于 `packages/` 目录下,这些是可复用的模块,旨在提高代码共享和维护性。
  37. - **`@core`**: 包含非常基础和核心的功能。
  38. - `base/`: 基础设计系统 (design tokens, scss-bem), icons, shared utils, typings。
  39. - [packages/@core/base/design/](mdc:packages/@core/base/design)
  40. - [packages/@core/base/icons/](mdc:packages/@core/base/icons)
  41. - [packages/@core/base/shared/](mdc:packages/@core/base/shared)
  42. - `composables/`: Vue Composables。
  43. - [packages/@core/composables/](mdc:packages/@core/composables)
  44. - `ui-kit/`: UI无关的组件或特定UI库的封装。
  45. - [packages/@core/ui-kit/shadcn-ui/](mdc:packages/@core/ui-kit/shadcn-ui)
  46. - **`effects`**: 包含一些通用效果、布局、插件等,通常与具体UI框架解耦。
  47. - `common-ui/`: 通用UI组件。
  48. - [packages/effects/common-ui/](mdc:packages/effects/common-ui)
  49. - `layouts/`: 布局系统。
  50. - [packages/effects/layouts/](mdc:packages/effects/layouts)
  51. 理解这个 Monorepo 结构对于在项目中导航和开发至关重要。