| | |
| | | # 仓库指南 |
| | | # Repository Guidelines |
| | | |
| | | ## 项目结构与模块组织 |
| | | 这是一个 pnpm monorepo,包含两个工作区根目录: |
| | | - `applications/`:可运行的应用 |
| | | - `applications/drone-web-manage`:管理端(Vite + Vue 3) |
| | | - `applications/command-center-dashboard`:大屏指挥调度 |
| | | - `applications/drone-app-web-view`:App WebView |
| | | - `packages/`:共享库(如 `packages/apis`、`packages/components`、`packages/constants`、`packages/hooks`、`packages/utils`) |
| | | 静态资源一般位于各应用的 `public/` 与 `src/assets/`(例如 `applications/drone-web-manage/public/img`)。 |
| | | - `applications/`:可运行的 Web 应用(如 `drone-command/`、`mobile-web-view/`、`task-work-order/`)。 |
| | | - `packages/`:共享库(API、组件、常量、hooks、工具等)。 |
| | | - `uniapps/`:UniApp 相关应用(如 `work-app/`、`work-wx/`)。 |
| | | - 资源文件通常放在各应用内,具体入口以各应用的 `README.md` 为准。 |
| | | |
| | | ## 构建、测试与开发命令 |
| | | 默认在仓库根目录执行: |
| | | - `pnpm install`:安装所有工作区依赖。 |
| | | - `pnpm dev`:启动所有应用的开发模式。 |
| | | - `pnpm dev:manage`:启动 `applications/drone-web-manage`。 |
| | | - `pnpm dev:largeScreen`:启动 `applications/command-center-dashboard`。 |
| | | - `pnpm dev:webView`:启动 `applications/drone-app-web-view`。 |
| | | - `pnpm build:test:manage` / `pnpm build:prod:manage`:构建管理端测试/生产包。 |
| | | - `pnpm build:test:largeScreen` / `pnpm build:prod:largeScreen`:构建大屏应用。 |
| | | - `pnpm build:test:webView` / `pnpm build:prod:webView`:构建 WebView 应用。 |
| | | 各应用内可用脚本使用 `pnpm -C <app> <script>` 调用,如 `dev`、`serve`、`build:*`。 |
| | | 在仓库根目录使用 `pnpm`: |
| | | - `pnpm install`:安装工作区依赖。 |
| | | - `pnpm dev`:并行启动所有工作区的开发服务。 |
| | | - `pnpm dev:drone-command`:启动单个应用。 |
| | | - `pnpm dev:mobile-web-view`:启动单个应用。 |
| | | - `pnpm dev:task-work-order`:启动单个应用。 |
| | | - `pnpm dev:work-app`:启动 UniApp H5 开发服务。 |
| | | - `pnpm dev:work-wx`:启动 UniApp H5 开发服务。 |
| | | - `pnpm build:test:<app>` / `pnpm build:prod:<app>`:构建指定应用,例如 `pnpm build:prod:mobile-web-view`。 |
| | | |
| | | ## 代码风格与命名约定 |
| | | - 格式化遵循 `.prettierrc.json`(使用制表符,`printWidth: 120`,单引号,无分号,CRLF)。 |
| | | - SCSS 覆盖配置使用 4 空格制表与双引号。 |
| | | - Vue 组件使用 `PascalCase` 命名(如 `UserProfile.vue`),页面目录同样使用 `PascalCase`。 |
| | | - 共享逻辑优先放入 `packages/*`,避免在应用内复制粘贴。 |
| | | ## 编码风格与命名规范 |
| | | - 使用 Prettier 统一格式化(`.prettierrc.json`)。 |
| | | - 使用 Tab 缩进(`tabWidth: 2`, `useTabs: true`),`semi: false`,`singleQuote: true`。 |
| | | - SCSS 使用 `tabWidth: 4` 且双引号。 |
| | | - 文件与目录保持 kebab-case,遵循现有应用与包的命名风格。 |
| | | |
| | | ## 测试规范 |
| | | - 当前未配置测试框架,`pnpm test` 会直接报错退出。 |
| | | - 如需新增测试,请在此文件注明测试框架与目录结构(例如 `src/**/__tests__`)。 |
| | | ## 测试指南 |
| | | - 当前未配置测试框架(`pnpm test` 会直接退出)。 |
| | | - 若新增测试,请在对应应用 `README.md` 说明测试框架,并补充根目录脚本。 |
| | | |
| | | ## 提交与合并请求规范 |
| | | - 提交信息遵循 `type: subject`(例如 `feat: add device filter`)。 |
| | | - 常见类型:`feat`、`fix`、`docs`、`style`、`refactor`、`perf`、`test`、`chore`、`ci`、`revert`。 |
| | | - PR 需包含清晰的变更说明、关联的需求/缺陷链接,并为 UI 变更提供截图或 GIF。 |
| | | - 提交历史使用简短的约定式主题(如 `feat: ...`)。 |
| | | - 建议使用 `feat:`、`fix:`、`chore:`、`refactor:` 等前缀并保持简洁描述。 |
| | | - PR 需要包含:目的、影响的应用/包、UI 改动截图。 |
| | | - 可关联相关 issue 或工单。 |
| | | |
| | | ## 环境与配置说明 |
| | | - Node.js 20以上 |
| | | - pnpm 9以上 |
| | | - 统一使用 `pnpm`,锁文件为 `pnpm-lock.yaml`。 |
| | | ## 环境与配置 |
| | | - Node.js >= 20,pnpm >= 9。 |
| | | - 优先使用根目录工作区脚本,除非必要不要在子目录直接运行脚本。 |