create-admin-mvp 1.0.0

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.
Files changed (56) hide show
  1. package/dist/index.d.mts +1 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +175 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +159 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +41 -0
  8. package/templates/admin-portal/ .stylelintrc.cjs +39 -0
  9. package/templates/admin-portal/.dockerignore +60 -0
  10. package/templates/admin-portal/.env +29 -0
  11. package/templates/admin-portal/.env.development +41 -0
  12. package/templates/admin-portal/.env.example +4 -0
  13. package/templates/admin-portal/.env.production +41 -0
  14. package/templates/admin-portal/.eslintrc.cjs +45 -0
  15. package/templates/admin-portal/.github/workflows/ci.yml +217 -0
  16. package/templates/admin-portal/.husky/commit-msg +11 -0
  17. package/templates/admin-portal/.husky/pre-commit +10 -0
  18. package/templates/admin-portal/.lintstagedrc.json +13 -0
  19. package/templates/admin-portal/.prettierrc.cjs +19 -0
  20. package/templates/admin-portal/.stylelintrc.cjs +35 -0
  21. package/templates/admin-portal/Dockerfile +35 -0
  22. package/templates/admin-portal/README.md +196 -0
  23. package/templates/admin-portal/commitlint.config.cjs +41 -0
  24. package/templates/admin-portal/docker-compose.yml +35 -0
  25. package/templates/admin-portal/index.html +13 -0
  26. package/templates/admin-portal/nginx.conf +45 -0
  27. package/templates/admin-portal/package-lock.json +10730 -0
  28. package/templates/admin-portal/package.json +62 -0
  29. package/templates/admin-portal/playwright-report/index.html +85 -0
  30. package/templates/admin-portal/playwright.config.ts +73 -0
  31. package/templates/admin-portal/pnpm-lock.yaml +1620 -0
  32. package/templates/admin-portal/postcss.config.cjs +56 -0
  33. package/templates/admin-portal/public/vite.svg +1 -0
  34. package/templates/admin-portal/src/App.vue +15 -0
  35. package/templates/admin-portal/src/assets/styles/main.css +36 -0
  36. package/templates/admin-portal/src/assets/vue.svg +1 -0
  37. package/templates/admin-portal/src/components/HelloWorld.vue +41 -0
  38. package/templates/admin-portal/src/layout/index.vue +23 -0
  39. package/templates/admin-portal/src/main.ts +12 -0
  40. package/templates/admin-portal/src/mock/auth.ts +26 -0
  41. package/templates/admin-portal/src/permission.ts +15 -0
  42. package/templates/admin-portal/src/router/index.ts +21 -0
  43. package/templates/admin-portal/src/style.css +79 -0
  44. package/templates/admin-portal/src/views/About.vue +15 -0
  45. package/templates/admin-portal/src/views/Home.vue +15 -0
  46. package/templates/admin-portal/src/views/login/index.vue +34 -0
  47. package/templates/admin-portal/test-results/.last-run.json +23 -0
  48. package/templates/admin-portal/test-results/results.json +882 -0
  49. package/templates/admin-portal/tests/e2e/example.spec.ts +52 -0
  50. package/templates/admin-portal/tests/unit/example.test.ts +49 -0
  51. package/templates/admin-portal/tsconfig.app.json +18 -0
  52. package/templates/admin-portal/tsconfig.json +7 -0
  53. package/templates/admin-portal/tsconfig.node.json +22 -0
  54. package/templates/admin-portal/vite.config.ts +21 -0
  55. package/templates/admin-portal/vitest.config.ts +49 -0
  56. package/templates/admin-portal/vitest.setup.ts +60 -0
@@ -0,0 +1,41 @@
1
+ # 生产环境变量
2
+ # 生产环境(npm run build)会使用这些变量
3
+
4
+ # 环境模式
5
+ NODE_ENV=production
6
+
7
+ # API 基础 URL(生产环境)
8
+ VITE_API_BASE_URL=https://api.example.com/api
9
+
10
+ # 是否启用 Mock 数据(生产环境)
11
+ VITE_ENABLE_MOCK=false
12
+
13
+ # 是否启用性能监控(生产环境)
14
+ VITE_ENABLE_PERFORMANCE=true
15
+
16
+ # 是否启用错误监控(生产环境)
17
+ VITE_ENABLE_ERROR_TRACKING=true
18
+
19
+ # 是否启用用户行为分析(生产环境)
20
+ VITE_ENABLE_USER_ANALYTICS=true
21
+
22
+ # 是否启用热更新(生产环境)
23
+ VITE_HMR=false
24
+
25
+ # 是否启用 Source Map(生产环境)
26
+ VITE_SOURCE_MAP=false
27
+
28
+ # 是否启用 ESLint(生产环境)
29
+ VITE_ENABLE_ESLINT=false
30
+
31
+ # 是否启用 Prettier(生产环境)
32
+ VITE_ENABLE_PRETTIER=false
33
+
34
+ # 是否启用 Stylelint(生产环境)
35
+ VITE_ENABLE_STYLELINT=false
36
+
37
+ # 是否启用 Vitest(生产环境)
38
+ VITE_ENABLE_VITEST=false
39
+
40
+ # 是否启用 Playwright(生产环境)
41
+ VITE_ENABLE_PLAYWRIGHT=false
@@ -0,0 +1,45 @@
1
+ module.exports = {
2
+ // 告诉 ESLint 这是项目的根配置文件,停止向上级目录继续查找
3
+ root: true,
4
+ // 声明代码运行环境:浏览器、ES2021 语法、Node.js 全局变量均可用
5
+
6
+ env: {
7
+ browser: true, // 告诉 ESLint 识别浏览器全局变量(window、document 等),避免误报未定义
8
+ es2021: true, // 允许使用 ES2021 新语法及全局变量(如 Promise.any、WeakRef),防止解析错误
9
+ node: true, // 识别 Node.js 全局变量(process、__dirname 等),确保在 Node 环境不报错
10
+ },
11
+ // 继承官方推荐规则集、Vue3+TypeScript 推荐规则集、Prettier 格式化冲突覆盖
12
+
13
+ extends: [
14
+ 'eslint:recommended',
15
+ 'plugin:@typescript-eslint/recommended',
16
+ 'plugin:vue/vue3-recommended',
17
+ 'prettier',
18
+ ],
19
+ // 解析器选项:使用最新 ECMAScript 版本、@typescript-eslint/parser 解析 TS、按 ESModule 解析
20
+ parserOptions: {
21
+ ecmaVersion: 'latest',
22
+ parser: '@typescript-eslint/parser',
23
+ sourceType: 'module',
24
+ },
25
+ // 显式启用 vue 与 @typescript-eslint 插件,让对应规则生效
26
+ plugins: ['vue', '@typescript-eslint'],
27
+ // 自定义规则:关闭 Vue 多词组件名强制;未使用变量报错;any 类型仅警告;生产环境 console/debugger 警告,开发环境关闭
28
+ rules: {
29
+ 'vue/multi-word-component-names': 'off',
30
+ 'vue/no-unused-vars': 'error',
31
+ '@typescript-eslint/no-unused-vars': 'error',
32
+ '@typescript-eslint/no-explicit-any': 'warn',
33
+ 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
34
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
35
+ },
36
+ // 针对 *.vue 文件单独覆盖:强制 script 标签内部使用 2 空格缩进,且相对 <script> 标签再缩进 1 级
37
+ overrides: [
38
+ {
39
+ files: ['*.vue'],
40
+ rules: {
41
+ 'vue/script-indent': ['error', 2, { baseIndent: 1 }],
42
+ },
43
+ },
44
+ ],
45
+ }
@@ -0,0 +1,217 @@
1
+ # CI/CD 配置文件
2
+ # 用于自动化构建、测试和部署
3
+
4
+ name: CI/CD
5
+
6
+ # 触发条件
7
+ on:
8
+ push:
9
+ branches:
10
+ - main
11
+ - develop
12
+ pull_request:
13
+ branches:
14
+ - main
15
+ - develop
16
+
17
+ # 环境变量
18
+ env:
19
+ NODE_VERSION: '18'
20
+
21
+ # 任务
22
+ jobs:
23
+ # 代码检查
24
+ lint:
25
+ name: 代码检查
26
+ runs-on: ubuntu-latest
27
+
28
+ steps:
29
+ # 检出代码
30
+ - name: 检出代码
31
+ uses: actions/checkout@v4
32
+
33
+ # 设置 Node.js 环境
34
+ - name: 设置 Node.js 环境
35
+ uses: actions/setup-node@v4
36
+ with:
37
+ node-version: ${{ env.NODE_VERSION }}
38
+ cache: 'npm'
39
+
40
+ # 安装依赖
41
+ - name: 安装依赖
42
+ run: npm ci
43
+
44
+ # 运行 ESLint
45
+ - name: 运行 ESLint
46
+ run: npm run lint:eslint
47
+
48
+ # 运行 Prettier
49
+ - name: 运行 Prettier
50
+ run: npm run lint:prettier
51
+
52
+ # 运行 Stylelint
53
+ - name: 运行 Stylelint
54
+ run: npm run lint:stylelint
55
+
56
+ # 单元测试
57
+ test:
58
+ name: 单元测试
59
+ runs-on: ubuntu-latest
60
+
61
+ steps:
62
+ # 检出代码
63
+ - name: 检出代码
64
+ uses: actions/checkout@v4
65
+
66
+ # 设置 Node.js 环境
67
+ - name: 设置 Node.js 环境
68
+ uses: actions/setup-node@v4
69
+ with:
70
+ node-version: ${{ env.NODE_VERSION }}
71
+ cache: 'npm'
72
+
73
+ # 安装依赖
74
+ - name: 安装依赖
75
+ run: npm ci
76
+
77
+ # 运行单元测试
78
+ - name: 运行单元测试
79
+ run: npm run test:unit
80
+
81
+ # 上传测试覆盖率报告
82
+ - name: 上传测试覆盖率报告
83
+ uses: codecov/codecov-action@v3
84
+ with:
85
+ files: ./coverage/coverage-final.json
86
+ flags: unittests
87
+ name: codecov-umbrella
88
+
89
+ # E2E 测试
90
+ e2e:
91
+ name: E2E 测试
92
+ runs-on: ubuntu-latest
93
+
94
+ steps:
95
+ # 检出代码
96
+ - name: 检出代码
97
+ uses: actions/checkout@v4
98
+
99
+ # 设置 Node.js 环境
100
+ - name: 设置 Node.js 环境
101
+ uses: actions/setup-node@v4
102
+ with:
103
+ node-version: ${{ env.NODE_VERSION }}
104
+ cache: 'npm'
105
+
106
+ # 安装依赖
107
+ - name: 安装依赖
108
+ run: npm ci
109
+
110
+ # 安装 Playwright 浏览器
111
+ - name: 安装 Playwright 浏览器
112
+ run: npx playwright install --with-deps
113
+
114
+ # 运行 E2E 测试
115
+ - name: 运行 E2E 测试
116
+ run: npm run test:e2e
117
+
118
+ # 上传测试报告
119
+ - name: 上传测试报告
120
+ if: always()
121
+ uses: actions/upload-artifact@v3
122
+ with:
123
+ name: playwright-report
124
+ path: playwright-report/
125
+ retention-days: 30
126
+
127
+ # 构建
128
+ build:
129
+ name: 构建
130
+ runs-on: ubuntu-latest
131
+ needs: [lint, test]
132
+
133
+ steps:
134
+ # 检出代码
135
+ - name: 检出代码
136
+ uses: actions/checkout@v4
137
+
138
+ # 设置 Node.js 环境
139
+ - name: 设置 Node.js 环境
140
+ uses: actions/setup-node@v4
141
+ with:
142
+ node-version: ${{ env.NODE_VERSION }}
143
+ cache: 'npm'
144
+
145
+ # 安装依赖
146
+ - name: 安装依赖
147
+ run: npm ci
148
+
149
+ # 构建项目
150
+ - name: 构建项目
151
+ run: npm run build
152
+
153
+ # 上传构建产物
154
+ - name: 上传构建产物
155
+ uses: actions/upload-artifact@v3
156
+ with:
157
+ name: build
158
+ path: dist/
159
+ retention-days: 7
160
+
161
+ # 部署
162
+ deploy:
163
+ name: 部署
164
+ runs-on: ubuntu-latest
165
+ needs: [build]
166
+ if: github.ref == 'refs/heads/main'
167
+
168
+ steps:
169
+ # 检出代码
170
+ - name: 检出代码
171
+ uses: actions/checkout@v4
172
+
173
+ # 设置 Node.js 环境
174
+ - name: 设置 Node.js 环境
175
+ uses: actions/setup-node@v4
176
+ with:
177
+ node-version: ${{ env.NODE_VERSION }}
178
+ cache: 'npm'
179
+
180
+ # 安装依赖
181
+ - name: 安装依赖
182
+ run: npm ci
183
+
184
+ # 下载构建产物
185
+ - name: 下载构建产物
186
+ uses: actions/download-artifact@v3
187
+ with:
188
+ name: build
189
+ path: dist/
190
+
191
+ # 登录 Docker Hub
192
+ - name: 登录 Docker Hub
193
+ uses: docker/login-action@v3
194
+ with:
195
+ username: ${{ secrets.DOCKER_USERNAME }}
196
+ password: ${{ secrets.DOCKER_PASSWORD }}
197
+
198
+ # 构建 Docker 镜像
199
+ - name: 构建 Docker 镜像
200
+ run: docker build -t ${{ secrets.DOCKER_USERNAME }}/my-app:${{ github.sha }} .
201
+
202
+ # 推送 Docker 镜像
203
+ - name: 推送 Docker 镜像
204
+ run: docker push ${{ secrets.DOCKER_USERNAME }}/my-app:${{ github.sha }}
205
+
206
+ # 部署到服务器
207
+ - name: 部署到服务器
208
+ uses: appleboy/ssh-action@v1.0.0
209
+ with:
210
+ host: ${{ secrets.SERVER_HOST }}
211
+ username: ${{ secrets.SERVER_USERNAME }}
212
+ key: ${{ secrets.SERVER_SSH_KEY }}
213
+ script: |
214
+ docker pull ${{ secrets.DOCKER_USERNAME }}/my-app:${{ github.sha }}
215
+ docker stop my-app || true
216
+ docker rm my-app || true
217
+ docker run -d --name my-app -p 80:80 ${{ secrets.DOCKER_USERNAME }}/my-app:${{ github.sha }}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env sh
2
+ # filepath: /Users/xuhuiping/admin-mvp/packages/cli/templates/admin-portal/.husky/commit-msg
3
+ # Git commit-msg hook
4
+ # 在提交信息输入后执行,检查提交信息的格式
5
+
6
+ # 使用 commitlint 检查提交信息格式是否符合规范
7
+ # 1. npx:调用 Node 包执行器,确保使用本地依赖中的 commitlint
8
+ # 2. --no:禁止自动安装缺失的包,避免意外修改依赖
9
+ # 3. commitlint:执行 commitlint 命令,读取项目中的 commitlint 配置
10
+ # 4. --edit "$1":告诉 commitlint 读取 Git 传入的提交信息文件路径($1),并对其进行格式校验
11
+ npx --no -- commitlint --edit "$1"
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env sh
2
+ # filepath: /Users/xuhuiping/admin-mvp/packages/cli/templates/admin-portal/.husky/pre-commit
3
+ # Git pre-commit hook
4
+ # 在提交前执行,检查代码规范
5
+
6
+ # 使用 lint-staged 对暂存区的文件进行检查和格式化
7
+ # 1. npx:调用 Node 包执行器,确保使用本地依赖中的 lint-staged
8
+ # 2. --no:禁止自动安装缺失的包,避免意外修改依赖
9
+ # 3. lint-staged:执行 lint-staged 命令,读取项目中的 .lintstagedrc.json 配置
10
+ npx --no lint-staged
@@ -0,0 +1,13 @@
1
+
2
+ {
3
+ "*.{js,jsx,ts,tsx,vue}": [
4
+ "eslint --fix",
5
+ "prettier --write"
6
+ ],
7
+ "*.{css,scss,vue}": [
8
+ "stylelint --fix"
9
+ ],
10
+ "*.{json,md}": [
11
+ "prettier --write"
12
+ ]
13
+ }
@@ -0,0 +1,19 @@
1
+ module.exports = {
2
+ // 是否使用分号
3
+ semi: true,
4
+
5
+ // 缩进空格数
6
+ tabWidth: 2,
7
+
8
+ // 是否使用单引号
9
+ singleQuote: true,
10
+
11
+ // 每行最大字符数
12
+ printWidth: 100,
13
+
14
+ // 尾随逗号(ES5 兼容)
15
+ trailingComma: 'es5',
16
+
17
+ // 箭头函数参数括号(单参数时省略)
18
+ arrowParens: 'avoid'
19
+ }
@@ -0,0 +1,35 @@
1
+ module.exports = {
2
+ extends: [
3
+ 'stylelint-config-standard',
4
+ 'stylelint-config-recommended-vue',
5
+ 'stylelint-config-prettier',
6
+ ],
7
+ rules: {
8
+ 'selector-class-pattern': null,
9
+ 'no-descending-specificity': null,
10
+ 'comment-empty-line-before': null,
11
+ 'number-leading-zero': null,
12
+ 'rule-empty-line-before': null,
13
+ 'value-keyword-case': null,
14
+ 'color-function-notation': null,
15
+ 'alpha-value-notation': null,
16
+ 'selector-id-pattern': null,
17
+ 'selector-type-no-unknown': null,
18
+ 'selector-pseudo-class-no-unknown': [
19
+ true,
20
+ {
21
+ ignorePseudoClasses: ['deep'],
22
+ },
23
+ ],
24
+ },
25
+ overrides: [
26
+ {
27
+ files: ['**/*.vue'],
28
+ customSyntax: 'postcss-html',
29
+ },
30
+ {
31
+ files: ['**/*.less'],
32
+ customSyntax: 'postcss-less',
33
+ },
34
+ ],
35
+ }
@@ -0,0 +1,35 @@
1
+ # Dockerfile
2
+ # 用于构建 Docker 镜像
3
+
4
+ # 阶段1:构建阶段
5
+ FROM node:18-alpine AS builder
6
+
7
+ # 设置工作目录
8
+ WORKDIR /app
9
+
10
+ # 复制 package.json 和 package-lock.json
11
+ COPY package*.json ./
12
+
13
+ # 安装依赖
14
+ RUN npm ci
15
+
16
+ # 复制源代码
17
+ COPY . .
18
+
19
+ # 构建项目
20
+ RUN npm run build
21
+
22
+ # 阶段2:生产阶段
23
+ FROM nginx:alpine
24
+
25
+ # 复制 nginx 配置文件
26
+ COPY nginx.conf /etc/nginx/conf.d/default.conf
27
+
28
+ # 从构建阶段复制构建产物
29
+ COPY --from=builder /app/dist /usr/share/nginx/html
30
+
31
+ # 暴露端口
32
+ EXPOSE 80
33
+
34
+ # 启动 nginx
35
+ CMD ["nginx", "-g", "daemon off;"]
@@ -0,0 +1,196 @@
1
+ # Admin Portal
2
+
3
+ 企业级 Vue 3 + TypeScript + Vite 项目脚手架,包含完整的工程化配置。
4
+
5
+ ## 特性
6
+
7
+ - 🚀 **Vue 3** - 使用 Composition API
8
+ - 💎 **TypeScript** - 类型安全
9
+ - ⚡ **Vite** - 快速的构建工具
10
+ - 🎨 **代码规范** - ESLint + Prettier + Stylelint
11
+ - 🔒 **Git Hooks** - Husky + lint-staged + Commitlint
12
+ - 🧪 **自动化测试** - Vitest + Playwright
13
+ - 🐳 **Docker** - 容器化部署
14
+ - 🚀 **CI/CD** - GitHub Actions
15
+
16
+ ## 快速开始
17
+
18
+ ### 安装依赖
19
+
20
+ ```bash
21
+ npm install
22
+ ```
23
+
24
+ ### 启动开发服务器
25
+
26
+ ```bash
27
+ npm run dev
28
+ ```
29
+
30
+ ### 构建生产版本
31
+
32
+ ```bash
33
+ npm run build
34
+ ```
35
+
36
+ ### 预览生产构建
37
+
38
+ ```bash
39
+ npm run preview
40
+ ```
41
+
42
+ ## 代码规范
43
+
44
+ ### 运行代码检查
45
+
46
+ ```bash
47
+ # ESLint
48
+ npm run lint:eslint
49
+
50
+ # Prettier
51
+ npm run lint:prettier
52
+
53
+ # Stylelint
54
+ npm run lint:stylelint
55
+
56
+ # 所有检查
57
+ npm run lint
58
+ ```
59
+
60
+ ### 自动修复
61
+
62
+ ```bash
63
+ # ESLint 自动修复
64
+ npm run lint:eslint -- --fix
65
+
66
+ # Prettier 自动修复
67
+ npm run lint:prettier -- --write
68
+
69
+ # Stylelint 自动修复
70
+ npm run lint:stylelint -- --fix
71
+ ```
72
+
73
+ ## 测试
74
+
75
+ ### 单元测试
76
+
77
+ ```bash
78
+ # 运行单元测试
79
+ npm run test:unit
80
+
81
+ # 运行单元测试并生成覆盖率报告
82
+ npm run test:unit -- --coverage
83
+
84
+ # 监听模式
85
+ npm run test:unit -- --watch
86
+ ```
87
+
88
+ ### E2E 测试
89
+
90
+ ```bash
91
+ # 运行 E2E 测试
92
+ npm run test:e2e
93
+
94
+ # 运行 E2E 测试并生成报告
95
+ npm run test:e2e -- --reporter=html
96
+
97
+ # 调试模式
98
+ npm run test:e2e -- --debug
99
+ ```
100
+
101
+ ## Docker
102
+
103
+ ### 构建 Docker 镜像
104
+
105
+ ```bash
106
+ docker build -t my-app .
107
+ ```
108
+
109
+ ### 运行 Docker 容器
110
+
111
+ ```bash
112
+ docker run -p 80:80 my-app
113
+ ```
114
+
115
+ ### 使用 Docker Compose
116
+
117
+ ```bash
118
+ # 启动所有服务
119
+ docker-compose up -d
120
+
121
+ # 停止所有服务
122
+ docker-compose down
123
+
124
+ # 查看服务状态
125
+ docker-compose ps
126
+ ```
127
+
128
+ ## CI/CD
129
+
130
+ ### 配置 GitHub Secrets
131
+
132
+ 在 GitHub 仓库中配置以下 Secrets:
133
+
134
+ | Secret 名称 | 说明 |
135
+ |------------|------|
136
+ | `DOCKER_USERNAME` | Docker Hub 用户名 |
137
+ | `DOCKER_PASSWORD` | Docker Hub 密码 |
138
+ | `SERVER_HOST` | 服务器地址 |
139
+ | `SERVER_USERNAME` | 服务器用户名 |
140
+ | `SERVER_SSH_KEY` | 服务器 SSH 密钥 |
141
+
142
+ ### 触发 CI/CD
143
+
144
+ 推送到 `main` 或 `develop` 分支会自动触发 CI/CD 流程。
145
+
146
+ ## 项目结构
147
+
148
+ ```
149
+ .
150
+ ├── .github/workflows/ # CI/CD 配置
151
+ ├── .husky/ # Git Hooks
152
+ ├── public/ # 公共资源
153
+ ├── src/
154
+ │ ├── assets/ # 静态资源
155
+ │ │ └── styles/ # 样式文件
156
+ │ ├── router/ # 路由配置
157
+ │ ├── views/ # 页面组件
158
+ │ ├── App.vue # 根组件
159
+ │ └── main.ts # 入口文件
160
+ ├── tests/
161
+ │ ├── e2e/ # E2E 测试
162
+ │ └── unit/ # 单元测试
163
+ ├── .env # 环境变量
164
+ ├── .env.development # 开发环境变量
165
+ ├── .env.production # 生产环境变量
166
+ ├── Dockerfile # Docker 配置
167
+ ├── docker-compose.yml # Docker Compose 配置
168
+ ├── nginx.conf # Nginx 配置
169
+ ├── package.json # 项目配置
170
+ ├── tsconfig.json # TypeScript 配置
171
+ └── vite.config.ts # Vite 配置
172
+ ```
173
+
174
+ ## 环境变量
175
+
176
+ | 变量名 | 说明 | 默认值 |
177
+ |--------|------|--------|
178
+ | `VITE_APP_NAME` | 应用名称 | `Admin Portal` |
179
+ | `VITE_API_BASE_URL` | API 基础 URL | `/api` |
180
+ | `VITE_ENABLE_MOCK` | 是否启用 Mock | `false` |
181
+
182
+ ## 贡献指南
183
+
184
+ 1. Fork 本仓库
185
+ 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
186
+ 3. 提交更改 (`git commit -m 'feat: add some AmazingFeature'`)
187
+ 4. 推送到分支 (`git push origin feature/AmazingFeature`)
188
+ 5. 创建 Pull Request
189
+
190
+ ## 许可证
191
+
192
+ MIT License
193
+
194
+ ## 联系方式
195
+
196
+ 如有问题,请创建 Issue。
@@ -0,0 +1,41 @@
1
+ // filepath: /Users/xuhuiping/admin-mvp/packages/cli/templates/admin-portal/commitlint.config.cjs
2
+ // Commitlint 配置文件
3
+ // 规范 Git 提交信息的格式
4
+
5
+ module.exports = {
6
+ // 继承标准的提交信息规范(Conventional Commits)
7
+ extends: ['@commitlint/config-conventional'],
8
+ rules: {
9
+ // 限制提交信息的类型,只允许以下类型
10
+ 'type-enum': [
11
+ 2, // 错误级别:2 = error(提交失败)
12
+ 'always', // 必须匹配,不允许其他类型
13
+ [
14
+ 'feat', // 新功能(feature)
15
+ 'fix', // 修复bug(bug fix)
16
+ 'docs', // 文档变更(documentation)
17
+ 'style', // 代码格式调整(不影响代码运行的变动)
18
+ 'refactor', // 重构(既不是新增功能,也不是修复bug的代码变动)
19
+ 'perf', // 性能优化(performance)
20
+ 'test', // 测试相关(tests)
21
+ 'chore', // 构建过程或辅助工具变动(如更新依赖)
22
+ 'revert', // 回退之前的提交(revert)
23
+ 'build', // 打包(build system)
24
+ ],
25
+ ],
26
+ // 关闭类型大小写检查(允许大写或小写)
27
+ 'type-case': [0],
28
+ // 关闭类型不能为空的检查(允许没有类型)
29
+ 'type-empty': [0],
30
+ // 关闭作用域不能为空的检查(允许没有作用域)
31
+ 'scope-empty': [0],
32
+ // 关闭作用域大小写检查(允许大写或小写)
33
+ 'scope-case': [0],
34
+ // 关闭主题不能以句号结尾的检查(允许句号结尾)
35
+ 'subject-full-stop': [0, 'never'],
36
+ // 关闭主题大小写检查(允许大写或小写)
37
+ 'subject-case': [0, 'never'],
38
+ // 关闭标题最大长度检查(允许超过72个字符)
39
+ 'header-max-length': [0, 'always', 72],
40
+ },
41
+ }
@@ -0,0 +1,35 @@
1
+ # docker-compose.yml
2
+ # 用于编排 Docker 容器
3
+
4
+ version: '3.8'
5
+
6
+ services:
7
+ # 前端应用
8
+ app:
9
+ build:
10
+ context: .
11
+ dockerfile: Dockerfile
12
+ ports:
13
+ - "80:80"
14
+ environment:
15
+ - NODE_ENV=production
16
+ restart: always
17
+ networks:
18
+ - app-network
19
+
20
+ # API 服务(可选)
21
+ api:
22
+ image: node:18-alpine
23
+ working_dir: /app
24
+ volumes:
25
+ - ./api:/app
26
+ ports:
27
+ - "3000:3000"
28
+ command: npm start
29
+ restart: always
30
+ networks:
31
+ - app-network
32
+
33
+ networks:
34
+ app-network:
35
+ driver: bridge