generator-mico-cli 0.2.1 → 0.2.2-8.beta.1

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 (159) hide show
  1. package/README.md +199 -15
  2. package/bin/mico.js +232 -27
  3. package/generators/micro-react/index.js +200 -18
  4. package/generators/micro-react/meta.json +13 -0
  5. package/generators/micro-react/templates/.commitlintrc.js +1 -0
  6. package/generators/micro-react/templates/.cursor/rules/always-read-docs.mdc +14 -4
  7. package/generators/micro-react/templates/.cursor/rules/cicd-deploy.mdc +10 -8
  8. package/generators/micro-react/templates/.cursor/rules/coding-conventions.mdc +1 -1
  9. package/generators/micro-react/templates/.cursor/rules/development-guide.mdc +3 -4
  10. package/generators/micro-react/templates/.cursor/rules/layout-app.mdc +38 -31
  11. package/generators/micro-react/templates/.cursor/rules/project-overview.mdc +7 -4
  12. package/generators/micro-react/templates/.cursor/rules/theme-system.mdc +10 -12
  13. package/generators/micro-react/templates/.eslintrc.js +25 -1
  14. package/generators/micro-react/templates/AGENTS.md +5 -2
  15. package/generators/micro-react/templates/CICD/before_build.sh +76 -0
  16. package/generators/micro-react/templates/CICD/start_dev.sh +27 -3
  17. package/generators/micro-react/templates/CICD/start_prod.sh +26 -3
  18. package/generators/micro-react/templates/CICD/start_test.sh +28 -3
  19. package/generators/micro-react/templates/CICD/wangsu_fresh_dev.sh +4 -4
  20. package/generators/micro-react/templates/CICD/wangsu_fresh_prod.sh +4 -4
  21. package/generators/micro-react/templates/CICD/wangsu_fresh_test.sh +4 -4
  22. package/generators/micro-react/templates/CLAUDE.md +16 -9
  23. package/generators/micro-react/templates/README.md +42 -4
  24. package/generators/micro-react/templates/_gitignore +4 -0
  25. package/generators/micro-react/templates/_npmrc +4 -0
  26. package/generators/micro-react/templates/apps/layout/config/config.dev.ts +32 -16
  27. package/generators/micro-react/templates/apps/layout/config/config.prod.development.ts +24 -29
  28. package/generators/micro-react/templates/apps/layout/config/config.prod.testing.ts +25 -6
  29. package/generators/micro-react/templates/apps/layout/config/config.prod.ts +16 -7
  30. package/generators/micro-react/templates/apps/layout/config/config.ts +27 -4
  31. package/generators/micro-react/templates/apps/layout/config/routes.ts +5 -5
  32. package/generators/micro-react/templates/apps/layout/docs/arch-/346/227/245/345/277/227/344/270/216/345/270/270/351/207/217.md +2 -2
  33. package/generators/micro-react/templates/apps/layout/docs/common-intl.md +372 -0
  34. package/generators/micro-react/templates/apps/layout/docs/feat-/346/236/204/345/273/272define/344/270/216/345/205/215/350/256/244/350/257/201/345/210/235/345/247/213/346/200/201.md +44 -0
  35. package/generators/micro-react/templates/apps/layout/docs/feature-404/351/241/265/351/235/242.md +103 -0
  36. package/generators/micro-react/templates/apps/layout/docs/feature-/344/270/273/351/242/230/350/211/262/345/210/207/346/215/242.md +22 -26
  37. package/generators/micro-react/templates/apps/layout/docs/feature-/345/276/256/345/211/215/347/253/257/346/250/241/345/274/217.md +185 -28
  38. package/generators/micro-react/templates/apps/layout/docs/feature-/350/217/234/345/215/225/346/235/203/351/231/220/346/216/247/345/210/266.md +308 -63
  39. package/generators/micro-react/templates/apps/layout/docs/feature-/350/267/257/347/224/261/344/270/216/350/217/234/345/215/225/350/247/243/350/200/246.md +179 -0
  40. package/generators/micro-react/templates/apps/layout/docs/fix-SSO/346/227/240/351/231/220/351/207/215/345/256/232/345/220/221.md +88 -0
  41. package/generators/micro-react/templates/apps/layout/docs/utils-timezone.md +324 -0
  42. package/generators/micro-react/templates/apps/layout/mock/api.mock.ts +81 -61
  43. package/generators/micro-react/templates/apps/layout/mock/menus.ts +114 -4
  44. package/generators/micro-react/templates/apps/layout/mock/pages.ts +86 -0
  45. package/generators/micro-react/templates/apps/layout/package.json +7 -4
  46. package/generators/micro-react/templates/apps/layout/src/app.tsx +111 -76
  47. package/generators/micro-react/templates/apps/layout/src/common/auth/index.ts +3 -0
  48. package/generators/micro-react/templates/apps/layout/src/common/helpers.ts +177 -0
  49. package/generators/micro-react/templates/apps/layout/src/common/locale.ts +22 -17
  50. package/generators/micro-react/templates/apps/layout/src/common/menu/parser.ts +192 -42
  51. package/generators/micro-react/templates/apps/layout/src/common/menu/types.ts +69 -5
  52. package/generators/micro-react/templates/apps/layout/src/common/micro/index.ts +34 -0
  53. package/generators/micro-react/templates/apps/layout/src/common/micro-prefetch.ts +109 -0
  54. package/generators/micro-react/templates/apps/layout/src/common/portal-data.ts +45 -0
  55. package/generators/micro-react/templates/apps/layout/src/common/request/config.ts +72 -10
  56. package/generators/micro-react/templates/apps/layout/src/common/request/index.ts +2 -2
  57. package/generators/micro-react/templates/apps/layout/src/common/request/interceptors.ts +31 -3
  58. package/generators/micro-react/templates/apps/layout/src/common/request/sso.ts +29 -11
  59. package/generators/micro-react/templates/apps/layout/src/common/request/url-resolver.ts +1 -1
  60. package/generators/micro-react/templates/apps/layout/src/common/route-guard.ts +345 -0
  61. package/generators/micro-react/templates/apps/layout/src/common/theme.ts +2 -4
  62. package/generators/micro-react/templates/apps/layout/src/common/upload/oss.ts +3 -4
  63. package/generators/micro-react/templates/apps/layout/src/common/upload/types.ts +1 -1
  64. package/generators/micro-react/templates/apps/layout/src/common/uploadFiles.ts +1 -1
  65. package/generators/micro-react/templates/apps/layout/src/components/AppTabs/index.less +8 -3
  66. package/generators/micro-react/templates/apps/layout/src/components/AppTabs/index.tsx +25 -8
  67. package/generators/micro-react/templates/apps/layout/src/components/HeaderDropdown/index.tsx +20 -0
  68. package/generators/micro-react/templates/apps/layout/src/components/IconFont/index.tsx +5 -6
  69. package/generators/micro-react/templates/apps/layout/src/components/MicroAppLoader/index.less +21 -6
  70. package/generators/micro-react/templates/apps/layout/src/components/MicroAppLoader/index.tsx +83 -149
  71. package/generators/micro-react/templates/apps/layout/src/components/MicroAppLoader/micro-app-manager.ts +569 -0
  72. package/generators/micro-react/templates/apps/layout/src/components/RightContent/AvatarDropdown.tsx +383 -0
  73. package/generators/micro-react/templates/apps/layout/src/components/RightContent/avatar-dropdown.less +35 -0
  74. package/generators/micro-react/templates/apps/layout/src/components/RightContent/index.ts +2 -0
  75. package/generators/micro-react/templates/apps/layout/src/constants/index.ts +170 -6
  76. package/generators/micro-react/templates/apps/layout/src/global.less +18 -9
  77. package/generators/micro-react/templates/apps/layout/src/hooks/useMenu.ts +3 -2
  78. package/generators/micro-react/templates/apps/layout/src/hooks/useRoutePermissionRefresh.ts +72 -0
  79. package/generators/micro-react/templates/apps/layout/src/layouts/components/header/index.less +3 -1
  80. package/generators/micro-react/templates/apps/layout/src/layouts/components/header/index.tsx +10 -55
  81. package/generators/micro-react/templates/apps/layout/src/layouts/components/menu/index.less +34 -4
  82. package/generators/micro-react/templates/apps/layout/src/layouts/components/menu/index.tsx +24 -8
  83. package/generators/micro-react/templates/apps/layout/src/layouts/index.less +84 -13
  84. package/generators/micro-react/templates/apps/layout/src/layouts/index.tsx +156 -69
  85. package/generators/micro-react/templates/apps/layout/src/locales/en-US.ts +12 -0
  86. package/generators/micro-react/templates/apps/layout/src/locales/zh-CN.ts +12 -0
  87. package/generators/micro-react/templates/apps/layout/src/pages/403/index.tsx +8 -2
  88. package/generators/micro-react/templates/apps/layout/src/pages/404/index.tsx +78 -0
  89. package/generators/micro-react/templates/apps/layout/src/pages/Home/index.less +3 -0
  90. package/generators/micro-react/templates/apps/layout/src/pages/Home/index.tsx +7 -1
  91. package/generators/micro-react/templates/apps/layout/src/pages/User/Login/index.less +1 -1
  92. package/generators/micro-react/templates/apps/layout/src/pages/User/Login/index.tsx +3 -3
  93. package/generators/micro-react/templates/apps/layout/src/requestErrorConfig.ts +1 -1
  94. package/generators/micro-react/templates/apps/layout/src/services/config/index.ts +63 -0
  95. package/generators/micro-react/templates/apps/layout/src/services/config/type.ts +30 -0
  96. package/generators/micro-react/templates/apps/layout/src/services/user.ts +29 -2
  97. package/generators/micro-react/templates/apps/layout/tailwind.config.js +3 -0
  98. package/generators/micro-react/templates/deployDesc.md +3 -3
  99. package/generators/micro-react/templates/dev.preset.json +14 -0
  100. package/generators/micro-react/templates/docs/dev-preset.md +130 -0
  101. package/generators/micro-react/templates/package.json +21 -6
  102. package/generators/micro-react/templates/packages/common-intl/README.md +427 -0
  103. package/generators/micro-react/templates/packages/common-intl/package.json +34 -0
  104. package/generators/micro-react/templates/packages/common-intl/src/index.ts +7 -0
  105. package/generators/micro-react/templates/packages/common-intl/src/indexedDBUtils.ts +51 -0
  106. package/generators/micro-react/templates/packages/common-intl/src/intl.ts +50 -0
  107. package/generators/micro-react/templates/packages/common-intl/src/utils.ts +482 -0
  108. package/generators/micro-react/templates/packages/common-intl/tsconfig.json +22 -0
  109. package/generators/micro-react/templates/packages/common-intl/vite.config.ts +25 -0
  110. package/generators/micro-react/templates/scripts/apply-sentry-plugin.ts +45 -0
  111. package/generators/micro-react/templates/scripts/collect-dist.js +10 -0
  112. package/generators/micro-react/templates/scripts/dev-preset.js +265 -0
  113. package/generators/micro-react/templates/scripts/dev-preset.schema.json +39 -0
  114. package/generators/micro-react/templates/turbo.json +4 -1
  115. package/generators/subapp-react/index.js +326 -40
  116. package/generators/subapp-react/meta.json +10 -0
  117. package/generators/subapp-react/templates/homepage/.env +2 -1
  118. package/generators/subapp-react/templates/homepage/README.md +3 -3
  119. package/generators/subapp-react/templates/homepage/config/config.dev.ts +14 -7
  120. package/generators/subapp-react/templates/homepage/config/config.prod.development.ts +16 -5
  121. package/generators/subapp-react/templates/homepage/config/config.prod.testing.ts +16 -5
  122. package/generators/subapp-react/templates/homepage/config/config.prod.ts +14 -5
  123. package/generators/subapp-react/templates/homepage/config/config.ts +21 -0
  124. package/generators/subapp-react/templates/homepage/config/routes.ts +2 -2
  125. package/generators/subapp-react/templates/homepage/mock/api.mock.ts +2 -2
  126. package/generators/subapp-react/templates/homepage/package.json +7 -4
  127. package/generators/subapp-react/templates/homepage/src/app.tsx +18 -27
  128. package/generators/subapp-react/templates/homepage/src/common/request.ts +29 -2
  129. package/generators/subapp-react/templates/homepage/src/global.less +6 -5
  130. package/generators/subapp-react/templates/homepage/src/pages/index.less +3 -3
  131. package/generators/subapp-react/templates/homepage/src/pages/index.tsx +99 -60
  132. package/generators/subapp-react/templates/homepage/src/styles/theme.less +1 -1
  133. package/generators/subapp-umd/ignore-list.json +5 -0
  134. package/generators/subapp-umd/index.js +309 -0
  135. package/generators/subapp-umd/meta.json +11 -0
  136. package/generators/subapp-umd/templates/README.md +94 -0
  137. package/generators/subapp-umd/templates/package.json +35 -0
  138. package/generators/subapp-umd/templates/public/index.html +34 -0
  139. package/generators/subapp-umd/templates/src/App.less +15 -0
  140. package/generators/subapp-umd/templates/src/App.tsx +13 -0
  141. package/generators/subapp-umd/templates/src/index.ts +2 -0
  142. package/generators/subapp-umd/templates/tsconfig.json +27 -0
  143. package/generators/subapp-umd/templates/webpack.config.js +70 -0
  144. package/lib/utils.js +332 -2
  145. package/package.json +15 -2
  146. package/generators/micro-react/templates/apps/layout/mock/menus.json +0 -100
  147. package/generators/micro-react/templates/apps/layout/src/common/constants.ts +0 -38
  148. package/generators/micro-react/templates/apps/layout/src/components/MicroAppLoader/container-manager.ts +0 -202
  149. package/generators/micro-react/templates/packages/shared-styles/README.md +0 -124
  150. package/generators/micro-react/templates/packages/shared-styles/arco-design-mobile-override.less +0 -91
  151. package/generators/micro-react/templates/packages/shared-styles/arco-override.less +0 -119
  152. package/generators/micro-react/templates/packages/shared-styles/index.d.ts +0 -44
  153. package/generators/micro-react/templates/packages/shared-styles/index.less +0 -13
  154. package/generators/micro-react/templates/packages/shared-styles/package.json +0 -30
  155. package/generators/micro-react/templates/packages/shared-styles/theme-inject.less +0 -10
  156. package/generators/micro-react/templates/packages/shared-styles/themes/dark/custom-var.less +0 -290
  157. package/generators/micro-react/templates/packages/shared-styles/themes/normal/custom-var.less +0 -269
  158. package/generators/micro-react/templates/packages/shared-styles/variables-only.less +0 -433
  159. package/generators/micro-react/templates/packages/shared-styles/variables.less +0 -452
@@ -18,7 +18,7 @@ globs: ["**/themes/**", "**/useTheme**", "**/*.less"]
18
18
  │ └─────────────────────────────────────────────────────────┘│
19
19
  │ ↓ │
20
20
  │ ┌─────────────────────────────────────────────────────────┐│
21
- │ │ body[arco-theme="dark"] → Arco Design 组件 ││
21
+ │ │ body[arco-theme="dark"] → @mico-platform/ui 组件 ││
22
22
  │ │ body[data-theme="dark"] → 自定义 CSS 变量 ││
23
23
  │ └─────────────────────────────────────────────────────────┘│
24
24
  └─────────────────────────────────────────────────────────────┘
@@ -28,12 +28,10 @@ globs: ["**/themes/**", "**/useTheme**", "**/*.less"]
28
28
 
29
29
  | 文件 | 说明 |
30
30
  |------|------|
31
- | `packages/shared-styles/` | **共享样式包(主应用和子应用共用)** |
32
- | `packages/shared-styles/index.less` | 入口文件,导入全部样式 |
33
- | `packages/shared-styles/variables.less` | Less 变量定义 |
34
- | `packages/shared-styles/themes/normal/custom-var.less` | 亮色主题变量 |
35
- | `packages/shared-styles/themes/dark/custom-var.less` | 暗黑主题变量 |
36
- | `packages/shared-styles/arco-override.less` | Arco Design 变量覆盖 |
31
+ | `@mico-platform/theme` | **主题包(主应用和子应用共用)** |
32
+ | `@mico-platform/theme` | 主入口,CSS 变量 + Less 变量 |
33
+ | `@mico-platform/theme/variables` | Less 变量(子应用用) |
34
+ | `@mico-platform/theme/theme-inject` | 子应用独立运行时注入主题 |
37
35
  | `apps/layout/src/hooks/useTheme.ts` | 主题管理 Hook |
38
36
  | `apps/layout/src/common/theme.ts` | 主题初始化 |
39
37
 
@@ -54,7 +52,7 @@ interface UseThemeReturn {
54
52
  ### 使用示例
55
53
  ```tsx
56
54
  import { useTheme } from '@/hooks/useTheme';
57
- import { IconSun, IconMoon } from '@arco-design/web-react/icon';
55
+ import { IconSun, IconMoon } from '@mico-platform/ui/ic';
58
56
 
59
57
  const ThemeToggle: React.FC = () => {
60
58
  const { isDark, toggleTheme } = useTheme();
@@ -124,7 +122,7 @@ body[data-theme='dark'] {
124
122
 
125
123
  ## 主要颜色变量
126
124
 
127
- > 完整列表见:[shared-styles 包](packages/shared-styles/README.md#主要变量)
125
+ > 完整列表见:@mico-platform/theme 包文档
128
126
 
129
127
  | 分类 | 变量 | 说明 |
130
128
  |------|------|------|
@@ -139,7 +137,7 @@ body[data-theme='dark'] {
139
137
  ```typescript
140
138
  const applyTheme = (theme: Theme) => {
141
139
  if (theme === 'dark') {
142
- // Arco Design 暗黑模式
140
+ // @mico-platform/ui 暗黑模式(arco-theme)
143
141
  document.body.setAttribute('arco-theme', 'dark');
144
142
  // 自定义 CSS 变量
145
143
  document.body.setAttribute('data-theme', 'dark');
@@ -178,7 +176,7 @@ const getStoredTheme = (): Theme => {
178
176
 
179
177
  ```less
180
178
  // global.less - 仅导入 Less 变量(不打包 CSS 变量)
181
- @import '<%= packageScope %>/shared-styles/variables-only';
179
+ @import '@mico-platform/theme/variables';
182
180
  ```
183
181
 
184
182
  ```typescript
@@ -203,4 +201,4 @@ if (process.env.NODE_ENV === 'development') {
203
201
  3. **优先 Less 变量**: 使用 Less 变量有编辑器提示和类型检查
204
202
  4. **避免硬编码颜色**: 所有颜色都应使用主题变量
205
203
  5. **系统跟随**: 未手动设置主题时会跟随系统偏好变化
206
- 6. **子应用共享**: 子应用使用 `<%= packageScope %>/shared-styles` 包复用主题
204
+ 6. **子应用共享**: 子应用使用 `@mico-platform/theme` 包复用主题
@@ -19,12 +19,36 @@ module.exports = {
19
19
  },
20
20
  ],
21
21
  },
22
- // 忽略 apps/ 子包和 scripts/
22
+ // TypeScript 文件使用专门的 parser
23
+ overrides: [
24
+ {
25
+ files: ["*.ts", "*.tsx"],
26
+ parser: "@typescript-eslint/parser",
27
+ plugins: ["@typescript-eslint"],
28
+ extends: [
29
+ "eslint:recommended",
30
+ "plugin:@typescript-eslint/recommended",
31
+ ],
32
+ rules: {
33
+ // 使用 TS 版本的 no-unused-vars
34
+ "no-unused-vars": "off",
35
+ "@typescript-eslint/no-unused-vars": [
36
+ "warn",
37
+ {
38
+ argsIgnorePattern: "^_",
39
+ varsIgnorePattern: "^_",
40
+ },
41
+ ],
42
+ },
43
+ },
44
+ ],
45
+ // 忽略 apps/ 子包和 scripts/,apps由内部的eslint规则处理
23
46
  ignorePatterns: [
24
47
  'node_modules/',
25
48
  'dist/',
26
49
  'apps/',
27
50
  'scripts/',
51
+ '**/*.d.ts',
28
52
  ],
29
53
  };
30
54
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  - `apps/` 存放业务应用。当前应用:`apps/layout/`(主应用)、`apps/subapp/`(子应用)。
6
6
  - 应用源码位于 `apps/<app>/src/`,包含 `pages/`、`layouts/`、`components/`、`common/`、`hooks/`、`styles/` 等目录。
7
- - `packages/` 存放共享包,如 `packages/shared-styles/`(共享样式)。
7
+ - `packages/` 可存放其他共享包。
8
8
  - `scripts/` 包含仓库工具脚本(如 `scripts/dev.js`、`scripts/collect-dist.js`)。
9
9
  - `docs/` 存放工作流文档;`CICD/` 包含部署相关资源。
10
10
  - `dist/` 是生成的构建产物(收集于仓库根目录)。
@@ -14,7 +14,7 @@
14
14
  - **Monorepo**:Turborepo + pnpm Workspace
15
15
  - **前端框架**:UmiJS 4 / @umijs/max、React 18、TypeScript
16
16
  - **微前端**:qiankun
17
- - **UI 组件**:Arco Design Web
17
+ - **UI 组件**:@mico-platform/ui
18
18
  - **样式方案**:Tailwind CSS + Less
19
19
  - **代码规范**:ESLint、Stylelint、Husky、Commitlint
20
20
 
@@ -22,6 +22,9 @@
22
22
 
23
23
  - `pnpm install` 安装 workspace 依赖。
24
24
  - `pnpm dev` 运行交互式开发启动器(选择应用)。
25
+ - `pnpm dev:preset` 根据 `dev.preset.json` 配置,一次性并行启动多个应用。
26
+ - `pnpm dev:preset <preset>` 使用指定预设启动多应用。
27
+ - `pnpm list:preset` 列出所有可用的启动预设。
25
28
  - `pnpm -C apps/<app> dev` 直接运行指定应用。
26
29
  - `pnpm build` 构建所有应用用于生产环境;`pnpm build:development|testing|production|local` 设置不同环境模式。
27
30
  - `pnpm lint` 运行 ESLint + Turbo lint 检查;`pnpm lint:fix` 自动修复。
@@ -0,0 +1,76 @@
1
+ #!/bin/bash
2
+
3
+ # 计算当前构建分支的 BASE_REF,并为 Turbo 增量构建准备 TURBO_FILTER
4
+ # 该脚本会被其他脚本 source 调用,不要在这里直接 exit 1
5
+
6
+ set -e
7
+
8
+ # 获取项目根目录(如果调用方已设置 PROJECT_ROOT,则使用;否则使用当前工作目录)
9
+ PROJECT_ROOT="${PROJECT_ROOT:-$(pwd)}"
10
+
11
+ # 获取当前构建的分支(去掉 origin/ 前缀,用于比较)
12
+ # 优先使用环境变量 CURRENT_BRANCH(Jenkins 传入,格式可能是 origin/main、origin/feat/xxx)
13
+ # 其次使用 BRANCH_OR_TAG,最后从 git 获取
14
+ if [ -n "${CURRENT_BRANCH}" ]; then
15
+ CURRENT_BRANCH_NAME="${CURRENT_BRANCH#origin/}" # 去掉 origin/ 前缀
16
+ elif [ -n "${BRANCH_OR_TAG}" ]; then
17
+ CURRENT_BRANCH_NAME="${BRANCH_OR_TAG#origin/}" # 去掉 origin/ 前缀
18
+ else
19
+ CURRENT_BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)"
20
+ fi
21
+
22
+ echo "[before_build] Current branch (without origin/): ${CURRENT_BRANCH_NAME}"
23
+
24
+ # 比较当前分支和上次成功构建的分支是否一致
25
+ # LAST_SUCCESS_BRANCH 由 Jenkins 在构建时设置(从上次构建的结果中获取,格式可能是 origin/main、origin/feat/xxx)
26
+ if [ -n "${LAST_SUCCESS_BRANCH}" ]; then
27
+ # 去掉 LAST_SUCCESS_BRANCH 的 origin/ 前缀,用于比较
28
+ LAST_SUCCESS_BRANCH_NAME="${LAST_SUCCESS_BRANCH#origin/}"
29
+ echo "[before_build] Last success branch (without origin/): ${LAST_SUCCESS_BRANCH_NAME}"
30
+
31
+ if [ "${CURRENT_BRANCH_NAME}" != "${LAST_SUCCESS_BRANCH_NAME}" ]; then
32
+ # 分支不一致,需要全量构建
33
+ echo "[before_build] Branch changed: ${LAST_SUCCESS_BRANCH_NAME} -> ${CURRENT_BRANCH_NAME}, will perform full build (no filter)"
34
+ unset TURBO_FILTER
35
+ else
36
+ # 分支一致,尝试使用 PREVIOUS_COMMIT 进行增量构建
37
+ echo "[before_build] Branch unchanged: ${CURRENT_BRANCH_NAME}, checking PREVIOUS_COMMIT for incremental build"
38
+ if [ -n "${PREVIOUS_COMMIT}" ]; then
39
+ # 验证 commit 是否存在且有效
40
+ if git rev-parse --verify "${PREVIOUS_COMMIT}" >/dev/null 2>&1; then
41
+ # 关键检查:验证 PREVIOUS_COMMIT 是否是当前 HEAD 的祖先
42
+ # 这可以避免以下问题:
43
+ # 1. Rebase/Force push:PREVIOUS_COMMIT 不再是当前分支的祖先
44
+ # 2. Tag 被其他分支更新:PREVIOUS_COMMIT 不是当前分支的祖先
45
+ CURRENT_HEAD="$(git rev-parse HEAD)"
46
+ if git merge-base --is-ancestor "${PREVIOUS_COMMIT}" "${CURRENT_HEAD}" 2>/dev/null; then
47
+ # PREVIOUS_COMMIT 是当前 HEAD 的祖先,可以安全使用
48
+ BASE_REF="${PREVIOUS_COMMIT}"
49
+ echo "[before_build] Use PREVIOUS_COMMIT as BASE_REF: ${BASE_REF} (ancestor check passed)"
50
+ # 为 turbo --filter 准备语法形如 ...[<BASE_REF>]
51
+ TURBO_FILTER="...[${BASE_REF}]"
52
+ export TURBO_FILTER
53
+ echo "[before_build] TURBO_FILTER=${TURBO_FILTER} (incremental build)"
54
+ else
55
+ # PREVIOUS_COMMIT 不是当前 HEAD 的祖先,降级为全量构建
56
+ echo "[before_build] Warning: PREVIOUS_COMMIT=${PREVIOUS_COMMIT} is not an ancestor of HEAD=${CURRENT_HEAD}"
57
+ echo "[before_build] Possible reasons: rebase/force-push, tag updated by another branch, or shallow clone issue"
58
+ echo "[before_build] Falling back to full build (no filter)"
59
+ unset TURBO_FILTER
60
+ fi
61
+ else
62
+ echo "[before_build] Warning: PREVIOUS_COMMIT=${PREVIOUS_COMMIT} is not a valid commit, will perform full build"
63
+ unset TURBO_FILTER
64
+ fi
65
+ else
66
+ # PREVIOUS_COMMIT 未设置,进行全量构建
67
+ echo "[before_build] PREVIOUS_COMMIT not set, will perform full build (no filter)"
68
+ unset TURBO_FILTER
69
+ fi
70
+ fi
71
+ else
72
+ # LAST_SUCCESS_BRANCH 未设置,说明是第一次构建或 Jenkins 未配置该环境变量
73
+ echo "[before_build] LAST_SUCCESS_BRANCH not set, will perform full build (no filter)"
74
+ # 不设置 TURBO_FILTER,这样 package.json 中的 ${TURBO_FILTER:+--filter=${TURBO_FILTER}} 不会生效
75
+ unset TURBO_FILTER
76
+ fi
@@ -20,11 +20,35 @@ echo "项目版本: $VERSION"
20
20
  # 切换到项目根目录,确保后续命令在根目录下运行
21
21
  cd "$PROJECT_ROOT"
22
22
 
23
+ # 导出 PROJECT_ROOT 供 before_build.sh 使用
24
+ export PROJECT_ROOT
25
+
26
+ # 在执行构建前,计算 BASE_REF / TURBO_FILTER 等增量构建信息
27
+ if [ -f "$PROJECT_ROOT/CICD/before_build.sh" ]; then
28
+ # shellcheck disable=SC1090
29
+ source "$PROJECT_ROOT/CICD/before_build.sh"
30
+ fi
31
+
23
32
  # 设置子应用的 CDN 公共路径(开发环境)
24
- export CDN_PUBLIC_PATH="https://cdn-portal-dev.micoplatform.com/<%= projectName %>/${VERSION}/"
33
+ # 路径格式: https://cdn-xxx.com/<prefix>/<projectName>/<version>/
34
+ export CDN_PUBLIC_PATH="https://cdn-portal-dev.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/${VERSION}/"
25
35
  echo "CDN_PUBLIC_PATH: $CDN_PUBLIC_PATH"
26
36
 
27
- pnpm run build:development
37
+ # 开发环境,不上传 sourcemap。调试时如有需要再解开
38
+ # # ========== Sentry Auth Token ==========
39
+ # # SENTRY_AUTH_TOKEN 从 Jenkins 服务器文件读取(敏感信息,不写在脚本中)
40
+ # SENTRY_TOKEN_FILE="/var/lib/jenkins/.portal_sentry_auth_token"
41
+ # if [ -f "$SENTRY_TOKEN_FILE" ]; then
42
+ # export SENTRY_AUTH_TOKEN=$(cat "$SENTRY_TOKEN_FILE")
43
+ # fi
28
44
 
29
- echo "VERSION=$VERSION" > .env_x_<%= projectName %>
45
+ # if [ -z "$SENTRY_AUTH_TOKEN" ]; then
46
+ # echo "警告:SENTRY_AUTH_TOKEN 未设置(文件 $SENTRY_TOKEN_FILE 不存在),跳过 sourcemap 上传"
47
+ # fi
48
+
49
+ pnpm run build:development
30
50
 
51
+ # 只有在 CI 环境时才写入版本号文件(覆盖写入)
52
+ if [ "${CI}" = "true" ]; then
53
+ echo "VERSION=$VERSION" > .env_x_<%= projectName %>
54
+ fi
@@ -20,11 +20,34 @@ echo "项目版本: $VERSION"
20
20
  # 切换到项目根目录,确保后续命令在根目录下运行
21
21
  cd "$PROJECT_ROOT"
22
22
 
23
+ # 导出 PROJECT_ROOT 供 before_build.sh 使用
24
+ export PROJECT_ROOT
25
+
26
+ # 在执行构建前,计算 BASE_REF / TURBO_FILTER 等增量构建信息(用于增量构建)
27
+ if [ -f "$PROJECT_ROOT/CICD/before_build.sh" ]; then
28
+ # shellcheck disable=SC1090
29
+ source "$PROJECT_ROOT/CICD/before_build.sh"
30
+ fi
31
+
23
32
  # 设置子应用的 CDN 公共路径(生产环境)
24
- export CDN_PUBLIC_PATH="https://cdn-portal.micoplatform.com/<%= projectName %>/${VERSION}/"
33
+ # 路径格式: https://cdn-xxx.com/<prefix>/<projectName>/<version>/
34
+ export CDN_PUBLIC_PATH="https://cdn-portal.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/${VERSION}/"
25
35
  echo "CDN_PUBLIC_PATH: $CDN_PUBLIC_PATH"
26
36
 
27
- pnpm run build:production
37
+ # ========== Sentry Auth Token ==========
38
+ # SENTRY_AUTH_TOKEN 从 Jenkins 服务器文件读取(敏感信息,不写在脚本中)
39
+ SENTRY_TOKEN_FILE="/var/lib/jenkins/.portal_sentry_auth_token"
40
+ if [ -f "$SENTRY_TOKEN_FILE" ]; then
41
+ export SENTRY_AUTH_TOKEN=$(cat "$SENTRY_TOKEN_FILE")
42
+ fi
28
43
 
29
- echo "VERSION=$VERSION" > .env_x_<%= projectName %>
44
+ if [ -z "$SENTRY_AUTH_TOKEN" ]; then
45
+ echo "警告:SENTRY_AUTH_TOKEN 未设置(文件 $SENTRY_TOKEN_FILE 不存在),跳过 sourcemap 上传"
46
+ fi
47
+
48
+ pnpm run build:production
30
49
 
50
+ # 只有在 CI 环境时才写入版本号文件(覆盖写入)
51
+ if [ "${CI}" = "true" ]; then
52
+ echo "VERSION=$VERSION" > .env_x_<%= projectName %>
53
+ fi
@@ -20,11 +20,36 @@ echo "项目版本: $VERSION"
20
20
  # 切换到项目根目录,确保后续命令在根目录下运行
21
21
  cd "$PROJECT_ROOT"
22
22
 
23
+ # 导出 PROJECT_ROOT 供 before_build.sh 使用
24
+ export PROJECT_ROOT
25
+
26
+ # 在执行构建前,计算 BASE_REF / TURBO_FILTER 等增量构建信息
27
+ if [ -f "$PROJECT_ROOT/CICD/before_build.sh" ]; then
28
+ # shellcheck disable=SC1090
29
+ source "$PROJECT_ROOT/CICD/before_build.sh"
30
+ fi
31
+
32
+
23
33
  # 设置子应用的 CDN 公共路径(测试环境)
24
- export CDN_PUBLIC_PATH="https://cdn-portal-test.micoplatform.com/<%= projectName %>/${VERSION}/"
34
+ # 路径格式: https://cdn-xxx.com/<prefix>/<projectName>/<version>/
35
+ export CDN_PUBLIC_PATH="https://cdn-portal-test.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/${VERSION}/"
25
36
  echo "CDN_PUBLIC_PATH: $CDN_PUBLIC_PATH"
26
37
 
27
- pnpm run build:testing
38
+ # 测试环境,不上传 sourcemap。调试时如有需要再解开
39
+ # # ========== Sentry Auth Token ==========
40
+ # # SENTRY_AUTH_TOKEN 从 Jenkins 服务器文件读取(敏感信息,不写在脚本中)
41
+ # SENTRY_TOKEN_FILE="/var/lib/jenkins/.portal_sentry_auth_token"
42
+ # if [ -f "$SENTRY_TOKEN_FILE" ]; then
43
+ # export SENTRY_AUTH_TOKEN=$(cat "$SENTRY_TOKEN_FILE")
44
+ # fi
45
+
46
+ # if [ -z "$SENTRY_AUTH_TOKEN" ]; then
47
+ # echo "警告:SENTRY_AUTH_TOKEN 未设置(文件 $SENTRY_TOKEN_FILE 不存在),跳过 sourcemap 上传"
48
+ # fi
28
49
 
29
- echo "VERSION=$VERSION" > .env_x_<%= projectName %>
50
+ pnpm run build:testing
30
51
 
52
+ # 只有在 CI 环境时才写入版本号文件(覆盖写入)
53
+ if [ "${CI}" = "true" ]; then
54
+ echo "VERSION=$VERSION" > .env_x_<%= projectName %>
55
+ fi
@@ -5,13 +5,13 @@ apiKey=$(cat ~/.wangsu_key)
5
5
  date=`env LANG="en_US.UTF-8" date -u "+%a, %d %b %Y %H:%M:%S GMT"`
6
6
  password=`echo -en "$date" | openssl dgst -sha1 -hmac $apiKey -binary | openssl enc -base64`
7
7
  echo "打印刷新地址"
8
- echo "dir1:http://cdn-portal-dev.micoplatform.com/<%= projectName %>/$version/"
9
- echo "dir2:https://cdn-portal-dev.micoplatform.com/<%= projectName %>/$version/"
8
+ echo "dir1:http://cdn-portal-dev.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version/"
9
+ echo "dir2:https://cdn-portal-dev.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version/"
10
10
  curl -i --url "https://open.chinanetcenter.com/ccm/purge/ItemIdReceiver" -X "POST" -u "$username:$password" -H "Date:$date" -H "Content-Type: application/json" --data-binary @- <<EOF
11
11
  {
12
12
  "dirs": [
13
- "http://cdn-portal-dev.micoplatform.com/<%= projectName %>/$version",
14
- "https://cdn-portal-dev.micoplatform.com/<%= projectName %>/$version"
13
+ "http://cdn-portal-dev.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version",
14
+ "https://cdn-portal-dev.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version"
15
15
  ],
16
16
  "dirAction":"expire"
17
17
  }
@@ -5,13 +5,13 @@ apiKey=$(cat ~/.wangsu_key)
5
5
  date=`env LANG="en_US.UTF-8" date -u "+%a, %d %b %Y %H:%M:%S GMT"`
6
6
  password=`echo -en "$date" | openssl dgst -sha1 -hmac $apiKey -binary | openssl enc -base64`
7
7
  echo "打印刷新地址"
8
- echo "dir1:http://cdn-portal.micoplatform.com/<%= projectName %>/$version/"
9
- echo "dir2:https://cdn-portal.micoplatform.com/<%= projectName %>/$version/"
8
+ echo "dir1:http://cdn-portal.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version/"
9
+ echo "dir2:https://cdn-portal.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version/"
10
10
  curl -i --url "https://open.chinanetcenter.com/ccm/purge/ItemIdReceiver" -X "POST" -u "$username:$password" -H "Date:$date" -H "Content-Type: application/json" --data-binary @- <<EOF
11
11
  {
12
12
  "dirs": [
13
- "http://cdn-portal.micoplatform.com/<%= projectName %>/$version",
14
- "https://cdn-portal.micoplatform.com/<%= projectName %>/$version"
13
+ "http://cdn-portal.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version",
14
+ "https://cdn-portal.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version"
15
15
  ],
16
16
  "dirAction":"expire"
17
17
  }
@@ -5,13 +5,13 @@ apiKey=$(cat ~/.wangsu_key)
5
5
  date=`env LANG="en_US.UTF-8" date -u "+%a, %d %b %Y %H:%M:%S GMT"`
6
6
  password=`echo -en "$date" | openssl dgst -sha1 -hmac $apiKey -binary | openssl enc -base64`
7
7
  echo "打印刷新地址"
8
- echo "dir1:http://cdn-portal-test.micoplatform.com/<%= projectName %>/$version/"
9
- echo "dir2:https://cdn-portal-test.micoplatform.com/<%= projectName %>/$version/"
8
+ echo "dir1:http://cdn-portal-test.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version/"
9
+ echo "dir2:https://cdn-portal-test.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version/"
10
10
  curl -i --url "https://open.chinanetcenter.com/ccm/purge/ItemIdReceiver" -X "POST" -u "$username:$password" -H "Date:$date" -H "Content-Type: application/json" --data-binary @- <<EOF
11
11
  {
12
12
  "dirs": [
13
- "http://cdn-portal-test.micoplatform.com/<%= projectName %>/$version",
14
- "https://cdn-portal-test.micoplatform.com/<%= projectName %>/$version"
13
+ "http://cdn-portal-test.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version",
14
+ "https://cdn-portal-test.micoplatform.com/<%= cdnPrefixPath %><%= projectName %>/$version"
15
15
  ],
16
16
  "dirAction":"expire"
17
17
  }
@@ -11,7 +11,7 @@
11
11
  - **Monorepo**: Turborepo + pnpm Workspace
12
12
  - **前端框架**: UmiJS 4 (@umijs/max)、React 18、TypeScript
13
13
  - **微前端**: qiankun
14
- - **UI 组件**: Arco Design Web
14
+ - **UI 组件**: @mico-platform/ui
15
15
  - **样式方案**: Tailwind CSS + Less
16
16
  - **代码规范**: ESLint、Stylelint、Husky、Commitlint
17
17
 
@@ -53,16 +53,21 @@ apps/ # Workspace 应用目录(微前端子应用)
53
53
  │ │ ├── app.tsx # Umi 运行时配置
54
54
  │ │ ├── layouts/ # 布局组件
55
55
  │ │ ├── pages/ # 路由页面
56
- │ │ ├── components/ # 公共组件
56
+ │ │ ├── components/ # 公共组件(MicroAppLoader 等)
57
57
  │ │ ├── common/ # 工具模块(auth、request、upload、menu)
58
+ │ │ ├── constants/ # 常量定义(路由、主题、时区等)
58
59
  │ │ ├── hooks/ # 自定义 Hooks
59
60
  │ │ ├── services/ # API 服务层
60
61
  │ │ ├── models/ # Umi model(全局状态)
61
- │ │ ├── locales/ # 国际化文件(zh-CN、en-US)
62
- │ │ └── styles/ # 主题变量与样式覆盖
62
+ │ │ └── locales/ # 国际化文件(zh-CN、en-US)
63
63
  │ └── config/ # Umi 配置
64
- packages/ # 共享包
65
- ├── shared-styles/ # 共享样式
64
+ ├── basis/ # 基础数据子应用(货币管理等)
65
+ ├── src/
66
+ │ │ ├── pages/ # 路由页面
67
+ │ │ ├── locales/ # 国际化文件
68
+ │ │ └── common/ # 工具模块
69
+ │ └── config/ # Umi 配置
70
+ packages/ # 共享包(common-intl 等)
66
71
  scripts/ # 构建与开发脚本
67
72
  CICD/ # 部署资源
68
73
  ```
@@ -98,13 +103,13 @@ refactor(auth): 重构认证服务
98
103
  API 请求配置在 `src/common/request/`(模块化拆分为 6 个文件),错误处理在 `src/requestErrorConfig.ts`。详见 [请求模块架构](./apps/layout/docs/arch-请求模块.md)。
99
104
 
100
105
  ### 日志与常量
101
- Logger 工具在 `src/common/logger.ts`,常量定义在 `src/common/constants.ts`。详见 [日志与常量](./apps/layout/docs/arch-日志与常量.md)。
106
+ Logger 工具在 `src/common/logger.ts`,常量定义在 `src/constants/index.ts`。详见 [日志与常量](./apps/layout/docs/arch-日志与常量.md)。
102
107
 
103
108
  ### 认证模块
104
109
  认证逻辑在 `src/common/auth/`,核心文件 `auth-manager.ts` 管理 Token 存储和用户信息。SSO 登录在 `getInitialState()` 中完成,确保 UI 渲染前认证已就绪。
105
110
 
106
- ### 菜单系统
107
- 菜单解析与类型定义在 `src/common/menu/`。
111
+ ### 菜单与路由系统
112
+ 菜单解析与类型定义在 `src/common/menu/`。路由注册消费 `window.__MICO_PAGES__`(页面列表),菜单栏消费 `window.__MICO_MENUS__`(菜单树),两者解耦运作。权限通过菜单交叉引用 + 页面级兜底的双层策略控制。详见 [路由与菜单解耦](./apps/layout/docs/feature-路由与菜单解耦.md) 和 [菜单权限控制](./apps/layout/docs/feature-菜单权限控制.md)。
108
113
 
109
114
  ### 微前端
110
115
  layout 应用作为 qiankun 主应用,子应用通过 Umi 配置中的 qiankun 配置注册。详见 [微前端模式](./apps/layout/docs/feature-微前端模式.md)。
@@ -116,6 +121,8 @@ layout 应用作为 qiankun 主应用,子应用通过 Umi 配置中的 qiankun
116
121
  | [README.md](./README.md) | 项目入口、技术栈、常用命令 |
117
122
  | [提交规范](./docs/commit-message.md) | Git Commit 详细规范 |
118
123
  | [微前端模式](./apps/layout/docs/feature-微前端模式.md) | qiankun 架构、MicroAppLoader、子应用配置 |
124
+ | [路由与菜单解耦](./apps/layout/docs/feature-路由与菜单解耦.md) | PAGES/MENUS 数据源分离、双层权限控制 |
125
+ | [菜单权限控制](./apps/layout/docs/feature-菜单权限控制.md) | sideMenus 白名单、认证与授权分离 |
119
126
  | [主题色切换](./apps/layout/docs/feature-主题色切换.md) | useTheme Hook、CSS 变量系统 |
120
127
  | [请求模块架构](./apps/layout/docs/arch-请求模块.md) | HTTP 请求层模块化设计 |
121
128
  | [日志与常量](./apps/layout/docs/arch-日志与常量.md) | Logger 工具与常量管理 |
@@ -7,7 +7,7 @@
7
7
  - **Monorepo**:Turborepo + pnpm Workspace
8
8
  - **前端框架**:UmiJS 4 / @umijs/max
9
9
  - **微前端**:qiankun
10
- - **UI 组件**:Arco Design
10
+ - **UI 组件**:@mico-platform/ui
11
11
  - **样式方案**:Tailwind CSS + Less
12
12
  - **代码规范**:ESLint、Stylelint、lint-staged、Husky、Commitlint
13
13
 
@@ -27,22 +27,59 @@ pnpm install
27
27
  | 命令 | 说明 |
28
28
  |------|------|
29
29
  | `pnpm dev` | 交互式选择并启动应用开发服务器 |
30
+ | `pnpm dev:preset` | 根据配置文件并行启动多个应用 |
31
+ | `pnpm dev:preset <preset>` | 使用指定预设启动(如 `pnpm dev:preset full`) |
32
+ | `pnpm list:preset` | 列出所有可用的启动预设 |
30
33
  | `pnpm build` | 构建所有应用(生产环境) |
31
34
  | `pnpm build:development` | 构建所有应用(开发环境) |
32
35
  | `pnpm build:testing` | 构建所有应用(测试环境) |
33
36
  | `pnpm build:production` | 构建所有应用(生产环境) |
34
37
  | `pnpm lint` | 运行 ESLint + Turborepo lint 校验 |
35
38
  | `pnpm lint:fix` | 自动修复 lint 问题 |
39
+ | `pnpm create:umi-app` | 基于 Umi 模板创建新子应用 |
36
40
 
37
41
  > **提示**:也可以使用 `pnpm -C apps/<app-name> dev` 直接启动指定应用,例如 `pnpm -C apps/layout dev`。
38
42
 
43
+ ### 多应用并行启动
44
+
45
+ 通过 `dev.preset.json` 配置预设,一条命令并行启动多个应用:
46
+
47
+ ```bash
48
+ # 使用默认预设启动
49
+ pnpm dev:preset
50
+
51
+ # 使用指定预设
52
+ pnpm dev:preset full
53
+
54
+ # 查看所有预设
55
+ pnpm list:preset
56
+ ```
57
+
58
+ 预设配置文件 `dev.preset.json` 示例:
59
+
60
+ ```json
61
+ {
62
+ "presets": {
63
+ "full": {
64
+ "description": "启动所有应用",
65
+ "apps": ["layout", "subapp"]
66
+ }
67
+ },
68
+ "default": "full"
69
+ }
70
+ ```
71
+
72
+ 每个应用的日志会以不同颜色的前缀区分,按 `Ctrl+C` 同时停止所有应用。
73
+
74
+ 详细说明请参考 [多应用并行启动文档](./docs/dev-preset.md)。
75
+
39
76
  ## 新建子应用
40
77
 
41
78
  使用 Mico CLI 快速创建新的 React 子应用:
42
79
 
43
80
  ```bash
44
81
  # 全局安装(一次性)
45
- pnpm add -g yo mico-cli
82
+ pnpm add -g generator-mico-cli
46
83
 
47
84
  # 在仓库根目录执行
48
85
  mico create subapp-react
@@ -55,11 +92,12 @@ mico create subapp-react
55
92
  ├── apps/ # 业务应用目录
56
93
  │ └── layout/ # 主应用(qiankun master)
57
94
  ├── packages/ # 共享包目录
58
- │ └── shared-styles/ # 共享样式
59
95
  ├── scripts/ # 构建与开发脚本
60
- │ ├── dev.js # 交互式启动脚本
96
+ │ ├── dev.js # 交互式启动脚本(单应用)
97
+ │ ├── dev-preset.js # 多应用并行启动脚本
61
98
  │ ├── collect-dist.js # 构建产物收集
62
99
  │ └── create-umi-app.sh # 创建新应用
100
+ ├── dev.preset.json # 多应用启动预设配置
63
101
  ├── turbo.json # Turborepo 任务管道
64
102
  ├── pnpm-workspace.yaml # Workspace 包含范围
65
103
  └── .editorconfig # 编辑器统一约束
@@ -55,3 +55,7 @@ build
55
55
  /openspec
56
56
 
57
57
  **/tasks/*
58
+
59
+ .pnpm-store/**
60
+
61
+ .worktrees/**
@@ -1,2 +1,6 @@
1
1
  registry=https://registry.npmjs.com/
2
+ @mico-platform:registry=https://nexus-vywrajy.micoworld.net/repository/mico-base-common/
3
+ @common-web:registry=https://nexus-vywrajy.micoworld.net/repository/mico-base-common/
4
+ package-lock=false
5
+ //nexus-vywrajy.micoworld.net/repository/mico-base-common/:_auth=bWljby1ucG06SDR4WUROazdad1NeczltblJMTw==
2
6
 
@@ -1,13 +1,10 @@
1
1
  // https://umijs.org/config/
2
2
 
3
3
  import { defineConfig } from '@umijs/max';
4
- import fs from 'fs';
5
- import path from 'path';
6
4
 
7
- // 使用 fs 读取 JSON 避免成为配置依赖,修改 menus.json 不会触发服务器重启
8
- const mockMenus = JSON.parse(
9
- fs.readFileSync(path.join(__dirname, '../mock/menus.json'), 'utf-8'),
10
- );
5
+
6
+ import mockMenus from '../mock/menus';
7
+ import mockPages from '../mock/pages';
11
8
 
12
9
  const config: ReturnType<typeof defineConfig> = {
13
10
  publicPath: '/',
@@ -20,25 +17,48 @@ const config: ReturnType<typeof defineConfig> = {
20
17
  {
21
18
  content: `
22
19
  window.__MICO_MENUS__ = ${JSON.stringify(mockMenus)};
20
+ window.__MICO_PAGES__ = ${JSON.stringify(mockPages)};
23
21
  window.__MICO_CONFIG__ = {
24
- appName: 'Mico Center',
22
+ appId: '<%= projectName %>',
23
+ appName: '<%= projectName %>',
24
+ title: '测试样例',
25
+ logo: '',
25
26
  apiBaseUrl: '',
27
+ defaultPath: '',
28
+ // 免认证路由(跳过 SSO 登录),支持 /* 前缀匹配
29
+ // noAuthRouteList: ['/*'],
30
+ // 免权限校验路由(跳过菜单权限检查)
31
+ noPermissionRouteList: [],
32
+ // 不显示布局的路由(全屏页面)
33
+ // noLayoutRouteList: [],
34
+ // 关闭权限控制(调试用)
35
+ disableAuth: false,
36
+ // SSO 外跳地址(与 resolveExternalLoginPath 读取的 externalLoginPath 一致;生产由注入的 __MICO_CONFIG__ 提供)
37
+ externalLoginPath:
38
+ 'https://micous-idp.cig.tencentcs.com/sso/xxxxxxx/cas',
26
39
  };
27
40
  `,
28
41
  },
29
42
  ],
30
43
 
44
+ /**
45
+ * @name Monorepo 重定向
46
+ * @description 开发时将 workspace 包指向源码,支持热更新
47
+ * @doc https://umijs.org/docs/api/config#monoreporedirect
48
+ */
49
+ monorepoRedirect: {},
50
+
31
51
  proxy: {
32
52
  '/api': {
33
53
  // 要代理的地址
34
- target: 'https://dashboard-api-test.micoplatform.comn',
54
+ target: 'https://dashboard-api-test.micoplatform.com',
35
55
  // 配置了这个可以从 http 代理到 https
36
56
  // 依赖 origin 的功能可能需要这个,比如 cookie
37
57
  changeOrigin: true,
38
58
  },
39
- '/proxy/audit_svr': {
59
+ '/proxy/<%= projectName %>_svr': {
40
60
  // 要代理的地址
41
- target: 'https://dashboard-api-test.micoplatform.comn',
61
+ target: 'https://dashboard-api-test.micoplatform.com',
42
62
  // 配置了这个可以从 http 代理到 https
43
63
  // 依赖 origin 的功能可能需要这个,比如 cookie
44
64
  changeOrigin: true,
@@ -46,15 +66,11 @@ const config: ReturnType<typeof defineConfig> = {
46
66
  },
47
67
  define: {
48
68
  'process.env.NODE_ENV': 'development',
49
- 'process.env.APP_ID': 'mibot_dev',
50
69
  'process.env.API_BASE_URL': '',
51
- 'process.env.PROXY_SUFFIX': '/',
52
70
  'process.env.LOGIN_ENDPOINT':
53
- '',
71
+ 'https://dashboard-api-test.micoplatform.com/api/yufu_login/',
54
72
  'process.env.REFRESH_ENDPOINT':
55
- '',
56
- 'process.env.EXTERNAL_LOGIN_PATH':
57
- '',
73
+ 'https://dashboard-api-test.micoplatform.com/api/yufu_login/refresh/',
58
74
  },
59
75
  };
60
76