generator-mico-cli 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -0
- package/bin/mico.js +316 -0
- package/generators/micro-react/ignore-list.json +8 -0
- package/generators/micro-react/index.js +158 -0
- package/generators/micro-react/templates/.commitlintrc.js +6 -0
- package/generators/micro-react/templates/.cursor/rules/always-read-docs.mdc +129 -0
- package/generators/micro-react/templates/.cursor/rules/cicd-deploy.mdc +143 -0
- package/generators/micro-react/templates/.cursor/rules/coding-conventions.mdc +206 -0
- package/generators/micro-react/templates/.cursor/rules/commit-conventions.mdc +111 -0
- package/generators/micro-react/templates/.cursor/rules/development-guide.mdc +295 -0
- package/generators/micro-react/templates/.cursor/rules/layout-app.mdc +275 -0
- package/generators/micro-react/templates/.cursor/rules/micro-frontend.mdc +196 -0
- package/generators/micro-react/templates/.cursor/rules/project-overview.mdc +128 -0
- package/generators/micro-react/templates/.cursor/rules/request-auth.mdc +220 -0
- package/generators/micro-react/templates/.cursor/rules/theme-system.mdc +206 -0
- package/generators/micro-react/templates/.editorconfig +16 -0
- package/generators/micro-react/templates/.env +3 -0
- package/generators/micro-react/templates/.eslintrc.js +30 -0
- package/generators/micro-react/templates/.husky/commit-msg +2 -0
- package/generators/micro-react/templates/.husky/pre-commit +2 -0
- package/generators/micro-react/templates/.lintstagedrc +5 -0
- package/generators/micro-react/templates/.stylelintrc.js +25 -0
- package/generators/micro-react/templates/AGENTS.md +39 -0
- package/generators/micro-react/templates/CICD/start_dev.sh +30 -0
- package/generators/micro-react/templates/CICD/start_local.sh +30 -0
- package/generators/micro-react/templates/CICD/start_prod.sh +30 -0
- package/generators/micro-react/templates/CICD/start_test.sh +30 -0
- package/generators/micro-react/templates/CICD/wangsu_fresh_dev.sh +19 -0
- package/generators/micro-react/templates/CICD/wangsu_fresh_prod.sh +19 -0
- package/generators/micro-react/templates/CICD/wangsu_fresh_test.sh +19 -0
- package/generators/micro-react/templates/CLAUDE.md +106 -0
- package/generators/micro-react/templates/README.md +84 -0
- package/generators/micro-react/templates/_gitignore +57 -0
- package/generators/micro-react/templates/_npmrc +2 -0
- package/generators/micro-react/templates/apps/layout/.env +4 -0
- package/generators/micro-react/templates/apps/layout/.eslintrc.js +10 -0
- package/generators/micro-react/templates/apps/layout/.lintstagedrc +17 -0
- package/generators/micro-react/templates/apps/layout/.prettierignore +3 -0
- package/generators/micro-react/templates/apps/layout/.prettierrc +8 -0
- package/generators/micro-react/templates/apps/layout/.stylelintrc.js +20 -0
- package/generators/micro-react/templates/apps/layout/README.md +37 -0
- package/generators/micro-react/templates/apps/layout/config/config.dev.ts +54 -0
- package/generators/micro-react/templates/apps/layout/config/config.prod.ts +37 -0
- package/generators/micro-react/templates/apps/layout/config/config.testing.ts +27 -0
- package/generators/micro-react/templates/apps/layout/config/config.ts +132 -0
- package/generators/micro-react/templates/apps/layout/config/routes.ts +13 -0
- package/generators/micro-react/templates/apps/layout/mock/api.mock.ts +78 -0
- package/generators/micro-react/templates/apps/layout/mock/menus.json +100 -0
- package/generators/micro-react/templates/apps/layout/mock/menus.ts +11 -0
- package/generators/micro-react/templates/apps/layout/mock/user.mock.ts +20 -0
- package/generators/micro-react/templates/apps/layout/package.json +45 -0
- package/generators/micro-react/templates/apps/layout/public/font/ar-SA.js +54 -0
- package/generators/micro-react/templates/apps/layout/public/font/default.js +54 -0
- package/generators/micro-react/templates/apps/layout/src/app.tsx +123 -0
- package/generators/micro-react/templates/apps/layout/src/assets/.gitkeep +0 -0
- package/generators/micro-react/templates/apps/layout/src/common/auth/cs-auth-manager.ts +220 -0
- package/generators/micro-react/templates/apps/layout/src/common/auth/index.ts +41 -0
- package/generators/micro-react/templates/apps/layout/src/common/auth/tool.ts +3 -0
- package/generators/micro-react/templates/apps/layout/src/common/auth/type.ts +6 -0
- package/generators/micro-react/templates/apps/layout/src/common/constants.ts +38 -0
- package/generators/micro-react/templates/apps/layout/src/common/env.ts +73 -0
- package/generators/micro-react/templates/apps/layout/src/common/helpers.ts +69 -0
- package/generators/micro-react/templates/apps/layout/src/common/locale.ts +123 -0
- package/generators/micro-react/templates/apps/layout/src/common/logger.ts +45 -0
- package/generators/micro-react/templates/apps/layout/src/common/menu/index.ts +2 -0
- package/generators/micro-react/templates/apps/layout/src/common/menu/parser.ts +143 -0
- package/generators/micro-react/templates/apps/layout/src/common/menu/types.ts +92 -0
- package/generators/micro-react/templates/apps/layout/src/common/request/config.ts +73 -0
- package/generators/micro-react/templates/apps/layout/src/common/request/index.ts +188 -0
- package/generators/micro-react/templates/apps/layout/src/common/request/interceptors.ts +186 -0
- package/generators/micro-react/templates/apps/layout/src/common/request/sso.ts +132 -0
- package/generators/micro-react/templates/apps/layout/src/common/request/token-refresh.ts +136 -0
- package/generators/micro-react/templates/apps/layout/src/common/request/types.ts +44 -0
- package/generators/micro-react/templates/apps/layout/src/common/request/url-resolver.ts +75 -0
- package/generators/micro-react/templates/apps/layout/src/common/theme.ts +107 -0
- package/generators/micro-react/templates/apps/layout/src/common/types.ts +7 -0
- package/generators/micro-react/templates/apps/layout/src/common/upload/index.ts +2 -0
- package/generators/micro-react/templates/apps/layout/src/common/upload/oss.ts +401 -0
- package/generators/micro-react/templates/apps/layout/src/common/upload/types.ts +47 -0
- package/generators/micro-react/templates/apps/layout/src/common/uploadFiles.ts +35 -0
- package/generators/micro-react/templates/apps/layout/src/components/IconFont/index.tsx +25 -0
- package/generators/micro-react/templates/apps/layout/src/components/MicroAppLoader/index.less +44 -0
- package/generators/micro-react/templates/apps/layout/src/components/MicroAppLoader/index.tsx +121 -0
- package/generators/micro-react/templates/apps/layout/src/constants/index.ts +15 -0
- package/generators/micro-react/templates/apps/layout/src/global.less +13 -0
- package/generators/micro-react/templates/apps/layout/src/hooks/index.ts +3 -0
- package/generators/micro-react/templates/apps/layout/src/hooks/useAuth.ts +75 -0
- package/generators/micro-react/templates/apps/layout/src/hooks/useMenu.ts +35 -0
- package/generators/micro-react/templates/apps/layout/src/hooks/useMenuState.ts +112 -0
- package/generators/micro-react/templates/apps/layout/src/hooks/useTheme.ts +124 -0
- package/generators/micro-react/templates/apps/layout/src/layouts/components/header/index.less +109 -0
- package/generators/micro-react/templates/apps/layout/src/layouts/components/header/index.tsx +97 -0
- package/generators/micro-react/templates/apps/layout/src/layouts/components/menu/index.less +164 -0
- package/generators/micro-react/templates/apps/layout/src/layouts/components/menu/index.tsx +165 -0
- package/generators/micro-react/templates/apps/layout/src/layouts/index.less +71 -0
- package/generators/micro-react/templates/apps/layout/src/layouts/index.tsx +91 -0
- package/generators/micro-react/templates/apps/layout/src/locales/en-US.ts +20 -0
- package/generators/micro-react/templates/apps/layout/src/locales/zh-CN.ts +19 -0
- package/generators/micro-react/templates/apps/layout/src/models/global.ts +13 -0
- package/generators/micro-react/templates/apps/layout/src/pages/Home/index.less +3 -0
- package/generators/micro-react/templates/apps/layout/src/pages/Home/index.tsx +7 -0
- package/generators/micro-react/templates/apps/layout/src/requestErrorConfig.ts +171 -0
- package/generators/micro-react/templates/apps/layout/src/services/auth.ts +37 -0
- package/generators/micro-react/templates/apps/layout/src/services/oss.ts +40 -0
- package/generators/micro-react/templates/apps/layout/src/styles/arco-override.less +78 -0
- package/generators/micro-react/templates/apps/layout/src/styles/themes/dark/custom-var.less +244 -0
- package/generators/micro-react/templates/apps/layout/src/styles/themes/normal/custom-var.less +195 -0
- package/generators/micro-react/templates/apps/layout/src/styles/variables.less +5 -0
- package/generators/micro-react/templates/apps/layout/src/utils/format.ts +4 -0
- package/generators/micro-react/templates/apps/layout/tailwind.config.js +7 -0
- package/generators/micro-react/templates/apps/layout/tailwind.css +3 -0
- package/generators/micro-react/templates/apps/layout/tsconfig.json +3 -0
- package/generators/micro-react/templates/apps/layout/typings.d.ts +1 -0
- package/generators/micro-react/templates/deployDesc.md +60 -0
- package/generators/micro-react/templates/docs/commit-message.md +98 -0
- package/generators/micro-react/templates/package.json +35 -0
- package/generators/micro-react/templates/packages/shared-styles/README.md +125 -0
- package/generators/micro-react/templates/packages/shared-styles/arco-override.less +78 -0
- package/generators/micro-react/templates/packages/shared-styles/index.less +14 -0
- package/generators/micro-react/templates/packages/shared-styles/package.json +27 -0
- package/generators/micro-react/templates/packages/shared-styles/theme-inject.less +10 -0
- package/generators/micro-react/templates/packages/shared-styles/themes/dark/custom-var.less +246 -0
- package/generators/micro-react/templates/packages/shared-styles/themes/normal/custom-var.less +195 -0
- package/generators/micro-react/templates/packages/shared-styles/variables-only.less +301 -0
- package/generators/micro-react/templates/packages/shared-styles/variables.less +363 -0
- package/generators/micro-react/templates/pnpm-workspace.yaml +9 -0
- package/generators/micro-react/templates/scripts/collect-dist.js +68 -0
- package/generators/micro-react/templates/scripts/create-umi-app.sh +61 -0
- package/generators/micro-react/templates/scripts/dev.js +133 -0
- package/generators/micro-react/templates/turbo.json +68 -0
- package/generators/subapp-react/ignore-list.json +7 -0
- package/generators/subapp-react/index.js +189 -0
- package/generators/subapp-react/templates/homepage/.env +4 -0
- package/generators/subapp-react/templates/homepage/README.md +116 -0
- package/generators/subapp-react/templates/homepage/_gitignore +9 -0
- package/generators/subapp-react/templates/homepage/config/config.dev.ts +59 -0
- package/generators/subapp-react/templates/homepage/config/config.prod.ts +41 -0
- package/generators/subapp-react/templates/homepage/config/config.testing.ts +40 -0
- package/generators/subapp-react/templates/homepage/config/config.ts +102 -0
- package/generators/subapp-react/templates/homepage/config/routes.ts +7 -0
- package/generators/subapp-react/templates/homepage/mock/api.mock.ts +59 -0
- package/generators/subapp-react/templates/homepage/package.json +30 -0
- package/generators/subapp-react/templates/homepage/src/app.tsx +80 -0
- package/generators/subapp-react/templates/homepage/src/assets/yay.jpg +0 -0
- package/generators/subapp-react/templates/homepage/src/common/logger.ts +42 -0
- package/generators/subapp-react/templates/homepage/src/common/mainApp.ts +53 -0
- package/generators/subapp-react/templates/homepage/src/common/request.ts +49 -0
- package/generators/subapp-react/templates/homepage/src/global.less +26 -0
- package/generators/subapp-react/templates/homepage/src/pages/index.less +139 -0
- package/generators/subapp-react/templates/homepage/src/pages/index.tsx +342 -0
- package/generators/subapp-react/templates/homepage/src/styles/theme.less +6 -0
- package/generators/subapp-react/templates/homepage/tsconfig.json +3 -0
- package/generators/subapp-react/templates/homepage/typings.d.ts +17 -0
- package/lib/utils.js +165 -0
- package/package.json +31 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: CI/CD 与部署 - Jenkins 构建流程、环境配置、CDN 发布
|
|
3
|
+
globs: ["CICD/**", "deployDesc.md"]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CI/CD 与部署
|
|
7
|
+
|
|
8
|
+
## 构建架构
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
12
|
+
│ Jenkins │
|
|
13
|
+
│ ┌─────────────────────────────────────────────────────────────┐│
|
|
14
|
+
│ │ 根据环境执行对应脚本: ││
|
|
15
|
+
│ │ ││
|
|
16
|
+
│ │ 开发环境 → CICD/start_dev.sh → build:development ││
|
|
17
|
+
│ │ 测试环境 → CICD/start_test.sh → build:testing ││
|
|
18
|
+
│ │ 生产环境 → CICD/start_prod.sh → build:production ││
|
|
19
|
+
│ │ 本地构建 → CICD/start_local.sh → build:local ││
|
|
20
|
+
│ └─────────────────────────────────────────────────────────────┘│
|
|
21
|
+
│ ↓ │
|
|
22
|
+
│ ┌─────────────────────────────────────────────────────────────┐│
|
|
23
|
+
│ │ 构建产物:dist/{app}/ ││
|
|
24
|
+
│ │ 上传 CDN:cdn-portal[-env].micoplatform.com/<%= projectName %>/ ││
|
|
25
|
+
│ └─────────────────────────────────────────────────────────────┘│
|
|
26
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## CICD 脚本
|
|
30
|
+
|
|
31
|
+
| 脚本 | 环境 | 构建命令 | CDN 路径 |
|
|
32
|
+
|------|------|---------|---------|
|
|
33
|
+
| `start_dev.sh` | 开发 | `build:development` | `cdn-portal-dev.micoplatform.com` |
|
|
34
|
+
| `start_test.sh` | 测试 | `build:testing` | `cdn-portal-test.micoplatform.com` |
|
|
35
|
+
| `start_prod.sh` | 生产 | `build:production` | `cdn-portal.micoplatform.com` |
|
|
36
|
+
| `start_local.sh` | 本地 | `build:local` | `./`(相对路径) |
|
|
37
|
+
|
|
38
|
+
## 脚本执行流程
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
#!/bin/bash
|
|
42
|
+
source ~/.bashrc
|
|
43
|
+
|
|
44
|
+
# 1. 安装 Node.js 和 pnpm
|
|
45
|
+
nvm install 22.20.0
|
|
46
|
+
nvm use 22.20.0
|
|
47
|
+
npm i -g pnpm@10.18.2 --registry=https://registry.npmmirror.com
|
|
48
|
+
pnpm install
|
|
49
|
+
|
|
50
|
+
# 2. 获取版本号
|
|
51
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
52
|
+
|
|
53
|
+
# 3. 设置 CDN 路径
|
|
54
|
+
export CDN_PUBLIC_PATH="https://cdn-portal[-env].micoplatform.com/<%= projectName %>/${VERSION}/"
|
|
55
|
+
|
|
56
|
+
# 4. 执行构建
|
|
57
|
+
pnpm run build:[environment]
|
|
58
|
+
|
|
59
|
+
# 5. 输出版本信息
|
|
60
|
+
echo "VERSION=$VERSION" > .env_x_<%= projectName %>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 环境配置
|
|
64
|
+
|
|
65
|
+
### 分支策略
|
|
66
|
+
| 环境 | 分支 | 说明 |
|
|
67
|
+
|------|------|------|
|
|
68
|
+
| 测试环境 | `test` | 测试验证 |
|
|
69
|
+
| 生产环境 | `main` | 正式发布 |
|
|
70
|
+
|
|
71
|
+
### CDN 域名
|
|
72
|
+
| 环境 | 域名 |
|
|
73
|
+
|------|------|
|
|
74
|
+
| 开发 | `cdn-portal-dev.micoplatform.com` |
|
|
75
|
+
| 测试 | `cdn-portal-test.micoplatform.com` |
|
|
76
|
+
| 生产 | `cdn-portal.micoplatform.com` |
|
|
77
|
+
|
|
78
|
+
### CDN 路径结构
|
|
79
|
+
```
|
|
80
|
+
cdn-portal.micoplatform.com/
|
|
81
|
+
└── <%= projectName %>/
|
|
82
|
+
└── {version}/
|
|
83
|
+
└── dist/
|
|
84
|
+
├── layout/ # 主应用
|
|
85
|
+
├── homepage/ # 子应用
|
|
86
|
+
└── ...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 环境变量
|
|
90
|
+
|
|
91
|
+
### CDN_PUBLIC_PATH
|
|
92
|
+
- 通过 `turbo.json` 的 `globalEnv` 注入
|
|
93
|
+
- 用于设置静态资源的公共路径
|
|
94
|
+
- 不同环境有不同的 CDN 域名
|
|
95
|
+
|
|
96
|
+
### 版本号
|
|
97
|
+
- 从 `package.json` 的 `version` 字段读取
|
|
98
|
+
- 用于 CDN 路径中的版本隔离
|
|
99
|
+
- 构建后输出到 `.env_x_<%= projectName %>` 文件
|
|
100
|
+
|
|
101
|
+
## 构建产物
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# 构建后目录结构
|
|
105
|
+
dist/
|
|
106
|
+
├── layout/ # 主应用
|
|
107
|
+
│ ├── index.html
|
|
108
|
+
│ ├── umi.js
|
|
109
|
+
│ └── umi.css
|
|
110
|
+
├── homepage/ # 子应用
|
|
111
|
+
│ ├── index.html
|
|
112
|
+
│ ├── umi.js
|
|
113
|
+
│ └── umi.css
|
|
114
|
+
└── ...
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 本地构建测试
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# 模拟测试环境构建
|
|
121
|
+
sh CICD/start_test.sh
|
|
122
|
+
|
|
123
|
+
# 模拟生产环境构建
|
|
124
|
+
sh CICD/start_prod.sh
|
|
125
|
+
|
|
126
|
+
# 本地构建(使用相对路径)
|
|
127
|
+
sh CICD/start_local.sh
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 环境要求
|
|
131
|
+
|
|
132
|
+
| 依赖 | 版本 | 说明 |
|
|
133
|
+
|------|------|------|
|
|
134
|
+
| nvm | 最新版 | Node 版本管理 |
|
|
135
|
+
| Node.js | 22.20.0 | 运行时 |
|
|
136
|
+
| pnpm | 10.18.2 | 包管理器 |
|
|
137
|
+
|
|
138
|
+
## 注意事项
|
|
139
|
+
|
|
140
|
+
1. **版本号管理**:修改 `package.json` 的 `version` 会影响 CDN 路径
|
|
141
|
+
2. **CDN 刷新**:部署后可能需要刷新 CDN 缓存(见 `wangsu_fresh_*.sh`)
|
|
142
|
+
3. **环境隔离**:不同环境使用不同的 CDN 域名和路径
|
|
143
|
+
4. **构建缓存**:Turborepo 会根据 `turbo.json` 配置缓存构建结果
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 编码规范 - TypeScript、React、样式约定
|
|
3
|
+
globs: ["**/*.ts", "**/*.tsx", "**/*.less", "**/*.css"]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 编码规范
|
|
7
|
+
|
|
8
|
+
## TypeScript 命名规范
|
|
9
|
+
|
|
10
|
+
### 接口 (Interface)
|
|
11
|
+
使用 `I` 前缀:
|
|
12
|
+
```typescript
|
|
13
|
+
interface IUserInfo {
|
|
14
|
+
name: string;
|
|
15
|
+
avatar: string;
|
|
16
|
+
userid: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface IMenuItem {
|
|
20
|
+
id: number;
|
|
21
|
+
name: string;
|
|
22
|
+
children?: IMenuItem[];
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 枚举 (Enum)
|
|
27
|
+
使用 `E` 前缀:
|
|
28
|
+
```typescript
|
|
29
|
+
enum EStatus {
|
|
30
|
+
Pending = 'pending',
|
|
31
|
+
Approved = 'approved',
|
|
32
|
+
Rejected = 'rejected',
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
enum EUserRole {
|
|
36
|
+
Admin = 'admin',
|
|
37
|
+
User = 'user',
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 类型别名 (Type)
|
|
42
|
+
可用 `T` 前缀:
|
|
43
|
+
```typescript
|
|
44
|
+
type TCallback = () => void;
|
|
45
|
+
type TRequestOptions = {
|
|
46
|
+
headers?: Record<string, string>;
|
|
47
|
+
timeout?: number;
|
|
48
|
+
};
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## React 组件规范
|
|
52
|
+
|
|
53
|
+
### 函数组件
|
|
54
|
+
```typescript
|
|
55
|
+
import React from 'react';
|
|
56
|
+
|
|
57
|
+
interface MyComponentProps {
|
|
58
|
+
title: string;
|
|
59
|
+
onClose?: () => void;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const MyComponent: React.FC<MyComponentProps> = ({ title, onClose }) => {
|
|
63
|
+
return (
|
|
64
|
+
<div className="my-component">
|
|
65
|
+
<h1>{title}</h1>
|
|
66
|
+
{onClose && <button onClick={onClose}>关闭</button>}
|
|
67
|
+
</div>
|
|
68
|
+
);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export default MyComponent;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Hooks 规范
|
|
75
|
+
- 自定义 Hook 以 `use` 前缀命名
|
|
76
|
+
- 放置在 `src/hooks/` 目录
|
|
77
|
+
- 导出时在 `src/hooks/index.ts` 统一导出
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
// src/hooks/useTheme.ts
|
|
81
|
+
export const useTheme = () => {
|
|
82
|
+
// ...
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// src/hooks/index.ts
|
|
86
|
+
export { useTheme } from './useTheme';
|
|
87
|
+
export { useMenu } from './useMenu';
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 样式规范
|
|
91
|
+
|
|
92
|
+
### Less 变量使用
|
|
93
|
+
优先使用 Less 变量(有编辑器提示),而非直接使用 CSS 变量:
|
|
94
|
+
|
|
95
|
+
```less
|
|
96
|
+
// ✅ 推荐
|
|
97
|
+
.my-card {
|
|
98
|
+
background-color: @color-fill-1;
|
|
99
|
+
color: @color-text-2;
|
|
100
|
+
border: 1px solid @color-border-2;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// ⚠️ 可用但缺少提示
|
|
104
|
+
.my-card {
|
|
105
|
+
background-color: var(--color-fill-1);
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 主题适配
|
|
110
|
+
所有颜色都应使用主题变量,确保亮色/暗黑模式自动切换:
|
|
111
|
+
|
|
112
|
+
```less
|
|
113
|
+
// 主要颜色变量
|
|
114
|
+
@Brand1-1 ~ @Brand1-7 // 品牌主色系列
|
|
115
|
+
@color-text-1 ~ @color-text-5 // 文字颜色(深 → 浅)
|
|
116
|
+
@color-fill-1 ~ @color-fill-5 // 填充颜色(浅 → 深)
|
|
117
|
+
@color-border-1 ~ @color-border-4 // 边框颜色
|
|
118
|
+
@Success-1 ~ @Success-7 // 成功状态色
|
|
119
|
+
@Warning-1 ~ @Warning-7 // 警告状态色
|
|
120
|
+
@Danger-1 ~ @Danger-7 // 危险状态色
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 类名规范
|
|
124
|
+
- 使用 kebab-case(短横线分隔)
|
|
125
|
+
- 组件容器用 `-container` 后缀
|
|
126
|
+
- 子元素用 `-item`、`-content`、`-header` 等后缀
|
|
127
|
+
|
|
128
|
+
```less
|
|
129
|
+
.micro-app-container {
|
|
130
|
+
.micro-app-loading { }
|
|
131
|
+
.micro-app-content { }
|
|
132
|
+
.micro-app-error { }
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 文件组织
|
|
137
|
+
|
|
138
|
+
### 页面目录结构
|
|
139
|
+
复杂页面应拆分到独立文件夹:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
pages/
|
|
143
|
+
├── Home/
|
|
144
|
+
│ ├── index.tsx # 主组件
|
|
145
|
+
│ ├── index.less # 样式
|
|
146
|
+
│ └── components/ # 页面私有组件
|
|
147
|
+
│ ├── Header.tsx
|
|
148
|
+
│ └── List.tsx
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 公共组件
|
|
152
|
+
放置在 `src/components/` 目录,每个组件一个文件夹:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
components/
|
|
156
|
+
├── MicroAppLoader/
|
|
157
|
+
│ ├── index.tsx
|
|
158
|
+
│ └── index.less
|
|
159
|
+
├── IconFont/
|
|
160
|
+
│ └── index.tsx
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 导入顺序
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// 1. React 及其生态
|
|
167
|
+
import React, { useState, useEffect } from 'react';
|
|
168
|
+
import { useLocation } from '@umijs/max';
|
|
169
|
+
|
|
170
|
+
// 2. 第三方库
|
|
171
|
+
import { Button, Modal } from '@arco-design/web-react';
|
|
172
|
+
import dayjs from 'dayjs';
|
|
173
|
+
|
|
174
|
+
// 3. 项目内部模块(使用 @ 别名)
|
|
175
|
+
import { request } from '@/common/request';
|
|
176
|
+
import { useTheme } from '@/hooks';
|
|
177
|
+
|
|
178
|
+
// 4. 相对路径导入
|
|
179
|
+
import Header from './components/Header';
|
|
180
|
+
|
|
181
|
+
// 5. 样式文件
|
|
182
|
+
import './index.less';
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## 注释规范
|
|
186
|
+
|
|
187
|
+
### 函数注释
|
|
188
|
+
```typescript
|
|
189
|
+
/**
|
|
190
|
+
* 判断页面加载类型
|
|
191
|
+
* 有 htmlUrl 或 jsUrls 时使用 qiankun 微应用加载
|
|
192
|
+
* @param page 页面配置
|
|
193
|
+
* @returns 'internal' | 'microapp'
|
|
194
|
+
*/
|
|
195
|
+
const getLoadType = (page: MenuItem['page']): 'internal' | 'microapp' => {
|
|
196
|
+
// ...
|
|
197
|
+
};
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 关键逻辑注释
|
|
201
|
+
```typescript
|
|
202
|
+
// 如果有匹配的动态路由配置且需要加载微应用
|
|
203
|
+
if (currentRoute?.loadType === 'microapp' && currentRoute.entry) {
|
|
204
|
+
return <MicroAppLoader entry={currentRoute.entry} name={currentRoute.path} />;
|
|
205
|
+
}
|
|
206
|
+
```
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Git 提交规范 - Conventional Commits 格式
|
|
3
|
+
globs: []
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Git 提交规范
|
|
7
|
+
|
|
8
|
+
## 格式
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
type(scope): subject
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
- **type**: 必填,提交类型
|
|
15
|
+
- **scope**: 可选,影响范围(模块、页面、包名等)
|
|
16
|
+
- **subject**: 必填,简短描述(1-50 字符)
|
|
17
|
+
|
|
18
|
+
## 提交类型
|
|
19
|
+
|
|
20
|
+
| 类型 | 说明 | 示例 |
|
|
21
|
+
|------|------|------|
|
|
22
|
+
| `feat` | 新功能 | `feat(用户): 添加用户注册功能` |
|
|
23
|
+
| `fix` | Bug 修复 | `fix(表格): 修复分页显示问题` |
|
|
24
|
+
| `docs` | 文档更新 | `docs(API): 更新接口文档` |
|
|
25
|
+
| `style` | 代码格式(不影响功能) | `style(组件): 调整按钮样式` |
|
|
26
|
+
| `refactor` | 重构 | `refactor(auth): 重构认证服务` |
|
|
27
|
+
| `perf` | 性能优化 | `perf(列表): 优化渲染性能` |
|
|
28
|
+
| `test` | 测试相关 | `test(单元测试): 添加用户服务测试` |
|
|
29
|
+
| `build` | 构建系统或外部依赖 | `build(webpack): 升级依赖` |
|
|
30
|
+
| `ci` | CI 配置 | `ci(github): 添加自动部署` |
|
|
31
|
+
| `chore` | 其他杂项 | `chore(依赖): 更新依赖包` |
|
|
32
|
+
| `wip` | 开发中 | `wip(功能): 功能开发中` |
|
|
33
|
+
| `release` | 版本发布 | `release: v1.0.0` |
|
|
34
|
+
| `deps` | 依赖更新 | `deps: 升级 React 到 18.2` |
|
|
35
|
+
| `revert` | 回滚 | `revert: 回滚上一次提交` |
|
|
36
|
+
|
|
37
|
+
## 正确示例
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# 中文(推荐)
|
|
41
|
+
feat(用户管理): 添加用户删除功能
|
|
42
|
+
fix(表格): 修复分页显示问题
|
|
43
|
+
docs(API): 更新接口文档
|
|
44
|
+
style(组件): 调整按钮样式
|
|
45
|
+
refactor(服务): 重构用户服务逻辑
|
|
46
|
+
chore(依赖): 更新项目依赖包
|
|
47
|
+
perf(性能): 优化列表渲染性能
|
|
48
|
+
|
|
49
|
+
# 英文
|
|
50
|
+
feat(table): 支持列宽调整
|
|
51
|
+
fix(core): 处理失去焦点时发生的事件 (close #28)
|
|
52
|
+
chore(release): 更新日志
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 常见错误
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# ❌ 错误:缺少 type
|
|
59
|
+
添加用户功能
|
|
60
|
+
|
|
61
|
+
# ❌ 错误:type 不在允许列表中
|
|
62
|
+
add(user): 添加用户功能
|
|
63
|
+
|
|
64
|
+
# ❌ 错误:subject 为空
|
|
65
|
+
feat:
|
|
66
|
+
|
|
67
|
+
# ❌ 错误:subject 过长(超过50字符)
|
|
68
|
+
feat(user): 这是一个非常非常非常非常非常非常非常非常非常非常长的提交信息
|
|
69
|
+
|
|
70
|
+
# ✅ 正确
|
|
71
|
+
feat(user): 添加用户注册功能
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Scope 命名
|
|
75
|
+
|
|
76
|
+
- 使用短横线连接多个单词:`user-center`、`micro-app`
|
|
77
|
+
- 可以使用中文:`用户管理`、`表格`
|
|
78
|
+
- 建议与模块/目录名对应
|
|
79
|
+
|
|
80
|
+
## 特殊情况
|
|
81
|
+
|
|
82
|
+
### 合并分支
|
|
83
|
+
允许以 `Merge` 开头:
|
|
84
|
+
```bash
|
|
85
|
+
Merge branch 'feature/user' into main
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 回滚提交
|
|
89
|
+
允许以 `Revert` 开头:
|
|
90
|
+
```bash
|
|
91
|
+
Revert "feat(user): 添加用户功能"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 版本发布
|
|
95
|
+
允许以 `Version` 开头:
|
|
96
|
+
```bash
|
|
97
|
+
Version 1.0.0
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## 校验机制
|
|
101
|
+
|
|
102
|
+
- **钩子**: `.husky/commit-msg`
|
|
103
|
+
- **工具**: `npx --no-install max verify-commit`
|
|
104
|
+
- **配置**: `.commitlintrc.js`
|
|
105
|
+
|
|
106
|
+
提交前会自动校验消息格式,不符合规范将被拒绝。
|
|
107
|
+
|
|
108
|
+
## 相关链接
|
|
109
|
+
|
|
110
|
+
- [Conventional Commits](https://www.conventionalcommits.org/)
|
|
111
|
+
- [Angular Commit Guidelines](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit)
|