@chenhui996/gg-cli 1.0.7 → 1.0.9
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/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/template/main-app/.env.development +7 -0
- package/dist/template/main-app/.env.production +7 -0
- package/dist/template/{zhiguan → main-app}/README.md +13 -10
- package/dist/template/main-app/docs//345/276/256/345/211/215/347/253/257/346/236/266/346/236/204/350/256/276/350/256/241/344/270/216/345/274/200/345/217/221/346/214/207/345/215/227.md +285 -0
- package/dist/template/{zhiguan → main-app}/docs//351/241/271/347/233/256/347/233/256/345/275/225/347/273/223/346/236/204/350/247/204/350/214/203.md +24 -15
- package/dist/template/{zhiguan → main-app}/package.json +4 -2
- package/dist/template/{zhiguan → main-app}/src/api/user.ts +1 -1
- package/dist/template/main-app/src/components/AuthRoute/index.tsx +25 -0
- package/dist/template/{zhiguan → main-app}/src/layouts/BasicLayout.tsx +15 -7
- package/dist/template/main-app/src/main.tsx +36 -0
- package/dist/template/{zhiguan → main-app}/src/pages/404.test.tsx +1 -1
- package/dist/template/{zhiguan → main-app}/src/pages/home/index.tsx +2 -68
- package/dist/template/main-app/src/pages/login/index.tsx +97 -0
- package/dist/template/main-app/src/pages/micro-app/index.tsx +12 -0
- package/dist/template/{zhiguan → main-app}/src/router/index.tsx +18 -2
- package/dist/template/main-app/src/store/useGlobalStore.ts +29 -0
- package/dist/template/main-app/src/style.less +40 -0
- package/dist/template/main-app/src/utils/request/index.ts +113 -0
- package/dist/template/{zhiguan → main-app}/src/vite-env.d.ts +1 -0
- package/dist/template/{zhiguan → main-app}/vite.config.ts +28 -0
- package/dist/template/micro-app/.editorconfig +16 -0
- package/dist/template/micro-app/.env +1 -0
- package/dist/template/micro-app/.env.test +4 -0
- package/dist/template/micro-app/.prettierignore +34 -0
- package/dist/template/micro-app/.prettierrc +14 -0
- package/dist/template/micro-app/README.md +186 -0
- package/dist/template/micro-app/eslint.config.js +27 -0
- package/dist/template/micro-app/package-lock.json +7274 -0
- package/dist/template/micro-app/package.json +63 -0
- package/dist/template/micro-app/src/api/user.ts +21 -0
- package/dist/template/micro-app/src/assets/Frame 20.png +0 -0
- package/dist/template/micro-app/src/components/Chart/index.tsx +22 -0
- package/dist/template/micro-app/src/components/ErrorBoundary/index.tsx +82 -0
- package/dist/template/micro-app/src/layouts/BasicLayout.tsx +21 -0
- package/dist/template/micro-app/src/main.tsx +47 -0
- package/dist/template/micro-app/src/pages/404.test.tsx +20 -0
- package/dist/template/micro-app/src/pages/404.tsx +32 -0
- package/dist/template/micro-app/src/pages/home/index.less +59 -0
- package/dist/template/micro-app/src/pages/home/index.tsx +165 -0
- package/dist/template/micro-app/src/router/index.tsx +62 -0
- package/dist/template/micro-app/src/setupTests.ts +1 -0
- package/dist/template/micro-app/src/store/useGlobalStore.ts +20 -0
- package/dist/template/micro-app/src/vite-env.d.ts +16 -0
- package/dist/template/{react19 → micro-app}/tsconfig.app.json +7 -1
- package/dist/template/micro-app/vite.config.ts +116 -0
- package/dist/template/operations-tem/gitignore +24 -0
- package/package.json +1 -1
- package/dist/template/react19/README.md +0 -75
- package/dist/template/react19/eslint.config.js +0 -23
- package/dist/template/react19/package.json +0 -34
- package/dist/template/react19/src/App.css +0 -184
- package/dist/template/react19/src/App.tsx +0 -121
- package/dist/template/react19/src/assets/hero.png +0 -0
- package/dist/template/react19/src/assets/vite.svg +0 -1
- package/dist/template/react19/src/index.css +0 -111
- package/dist/template/react19/src/main.tsx +0 -10
- package/dist/template/react19/vite.config.ts +0 -11
- package/dist/template/zhiguan/src/main.tsx +0 -38
- package/dist/template/zhiguan/src/store/useCounterStore.ts +0 -24
- /package/dist/template/{zhiguan → main-app}/.editorconfig +0 -0
- /package/dist/template/{zhiguan → main-app}/.env +0 -0
- /package/dist/template/{zhiguan → main-app}/.env.test +0 -0
- /package/dist/template/{zhiguan → main-app}/.prettierignore +0 -0
- /package/dist/template/{zhiguan → main-app}/.prettierrc +0 -0
- /package/dist/template/{zhiguan → main-app}/docs/Git/345/274/200/345/217/221/350/247/204/350/214/203.md" +0 -0
- /package/dist/template/{zhiguan → main-app}/docs/React/345/274/200/345/217/221/350/247/204/350/214/203.md" +0 -0
- /package/dist/template/{zhiguan → main-app}/docs/TypeScript/345/274/200/345/217/221/350/247/204/350/214/203.md" +0 -0
- /package/dist/template/{zhiguan → main-app}/docs//345/211/215/347/253/257/346/227/245/345/277/227/344/270/216/347/233/221/346/216/247/345/237/213/347/202/271/350/247/204/350/214/203.md" +0 -0
- /package/dist/template/{zhiguan → main-app}/docs//345/215/225/345/205/203/346/265/213/350/257/225/350/247/204/350/214/203.md" +0 -0
- /package/dist/template/{zhiguan → main-app}/eslint.config.js +0 -0
- /package/dist/template/{react19 → main-app}/index.html +0 -0
- /package/dist/template/{react19 → main-app}/public/favicon.svg +0 -0
- /package/dist/template/{react19 → main-app}/public/icons.svg +0 -0
- /package/dist/template/{zhiguan → main-app}/src/assets/Frame 20.png +0 -0
- /package/dist/template/{react19 → main-app}/src/assets/react.svg +0 -0
- /package/dist/template/{zhiguan → main-app}/src/components/Chart/index.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/components/ErrorBoundary/index.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/pages/404.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/pages/about/index.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/pages/calendar/index.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/pages/dashboard/index.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/pages/home/index.less +0 -0
- /package/dist/template/{zhiguan → main-app}/src/pages/settings/index.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/pages/workspace/index.tsx +0 -0
- /package/dist/template/{zhiguan → main-app}/src/setupTests.ts +0 -0
- /package/dist/template/{zhiguan → main-app}/tsconfig.app.json +0 -0
- /package/dist/template/{react19 → main-app}/tsconfig.json +0 -0
- /package/dist/template/{react19 → main-app}/tsconfig.node.json +0 -0
- /package/dist/template/{zhiguan → micro-app}/.env.development +0 -0
- /package/dist/template/{zhiguan → micro-app}/.env.production +0 -0
- /package/dist/template/{zhiguan → micro-app}/index.html +0 -0
- /package/dist/template/{zhiguan → micro-app}/public/favicon.svg +0 -0
- /package/dist/template/{zhiguan → micro-app}/public/icons.svg +0 -0
- /package/dist/template/{zhiguan → micro-app}/src/assets/react.svg +0 -0
- /package/dist/template/{zhiguan → micro-app}/src/style.less +0 -0
- /package/dist/template/{zhiguan → micro-app}/src/utils/request/index.ts +0 -0
- /package/dist/template/{zhiguan → micro-app}/tsconfig.json +0 -0
- /package/dist/template/{zhiguan → micro-app}/tsconfig.node.json +0 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Operations Template (运营后台模版)
|
|
2
|
+
|
|
3
|
+
基于 React 19 + TypeScript + Vite 8 + Ant Design 6 的现代化后台管理系统模版。
|
|
4
|
+
本模版专为快速构建企业级中后台应用而设计,集成了最佳实践的工程化配置、清晰的架构分层和美观的 UI 设计。
|
|
5
|
+
|
|
6
|
+
## ✨ 特性与架构
|
|
7
|
+
|
|
8
|
+
- **最新技术栈**: 采用 React 19、Vite 8、TypeScript 5 等前沿技术。
|
|
9
|
+
- **UI 设计**: 集成 Ant Design 6,配合 Less 预处理器,深度还原企业级设计规范。
|
|
10
|
+
- **状态管理**: 使用 Zustand 5 进行轻量级全局状态管理,告别繁琐的 Redux 样板代码。
|
|
11
|
+
- **路由管理**: 基于 React Router 7.x 的 Data API 路由模式,支持更细粒度的路由控制。
|
|
12
|
+
- **网络请求**: 封装 Axios 1.x,统一处理拦截器、错误码和 TypeScript 类型定义。
|
|
13
|
+
- **工程化与规范**: 配置 ESLint 9 (逻辑检查) 与 Prettier (代码格式化),并集成 EditorConfig 统一跨编辑器基础风格。
|
|
14
|
+
- **多环境支持**: 完善的 `.env` 环境隔离机制,清晰区分开发 (dev)、测试 (test) 和生产 (prod) 环境。
|
|
15
|
+
- **生产构建优化**: 内置产物分类、第三方依赖 (Vendor) 手动分包策略、自动剔除 Console 等生产级优化。
|
|
16
|
+
|
|
17
|
+
## 📦 目录结构
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
src/
|
|
21
|
+
├── api/ # API 接口定义层 (按业务领域集中管理,如 user.ts, task.ts)
|
|
22
|
+
├── assets/ # 静态资源文件 (图片、图标等)
|
|
23
|
+
├── components/ # 全局公共组件库 (跨页面复用,如 Chart, ErrorBoundary)
|
|
24
|
+
├── hooks/ # 全局自定义 Hooks (通用逻辑抽象,如 user.ts、permission.ts)
|
|
25
|
+
├── layouts/ # 布局组件
|
|
26
|
+
│ └── BasicLayout.tsx # 基础布局 (侧边栏 + 顶栏 + 内容区)
|
|
27
|
+
├── pages/ # 页面组件 (Feature-based 高内聚架构)
|
|
28
|
+
│ ├── home/ # 首页模块
|
|
29
|
+
│ │ ├── components/ # 页面级专属组件 (就近原则)
|
|
30
|
+
│ │ ├── hooks.ts # 页面级专属逻辑 (就近原则)
|
|
31
|
+
│ │ ├── store.ts # 页面级专属状态 (就近原则)
|
|
32
|
+
│ │ └── index.tsx # 首页入口
|
|
33
|
+
│ ├── dashboard/ # 数据看板 (ECharts 示例)
|
|
34
|
+
│ └── about/ # 关于页面
|
|
35
|
+
├── router/ # 路由配置
|
|
36
|
+
│ └── index.tsx # 路由表定义
|
|
37
|
+
├── store/ # 全局状态管理 (Zustand - 仅存 Auth/App 等跨页面级状态)
|
|
38
|
+
│ └── user.ts # 例:user.ts、permission.ts
|
|
39
|
+
├── utils/ # 全局工具函数及基础设施
|
|
40
|
+
│ └── request/ # 例:Axios 二次封装
|
|
41
|
+
├── main.tsx # 应用入口
|
|
42
|
+
├── App.tsx # 根组件
|
|
43
|
+
└── vite-env.d.ts # Vite 环境变量类型声明
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 🚀 快速上手
|
|
47
|
+
|
|
48
|
+
### 1. 环境准备
|
|
49
|
+
|
|
50
|
+
确保您的本地环境已安装 Node.js (推荐 v18+)。
|
|
51
|
+
|
|
52
|
+
### 2. 安装依赖
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm install
|
|
56
|
+
# 或者
|
|
57
|
+
yarn
|
|
58
|
+
# 或者
|
|
59
|
+
pnpm install
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 3. 启动开发服务器
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm run dev
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
浏览器访问 `http://localhost:5173` 即可看到效果。
|
|
69
|
+
|
|
70
|
+
### 3. 构建生产环境
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# 构建测试环境
|
|
74
|
+
npm run build:test
|
|
75
|
+
|
|
76
|
+
# 构建生产环境
|
|
77
|
+
npm run build:prod
|
|
78
|
+
# 或
|
|
79
|
+
npm run build
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 🛠 开发与构建指南
|
|
83
|
+
|
|
84
|
+
### 1. 环境变量配置
|
|
85
|
+
|
|
86
|
+
项目根目录包含三个环境配置文件,利用 Vite 的 `import.meta.env` 进行读取,且内置了完整的 TypeScript 类型提示:
|
|
87
|
+
- `.env.development`:本地开发环境 (运行 `npm run dev` 时加载)
|
|
88
|
+
- `.env.test`:测试环境 (运行 `npm run build:test` 时加载)
|
|
89
|
+
- `.env.production`:生产环境 (运行 `npm run build:prod` 时加载)
|
|
90
|
+
|
|
91
|
+
> 💡 **注意**:在代码中可以通过 `import.meta.env.VITE_XXX` 访问环境变量。为了安全,所有暴露给前端的自定义环境变量必须以 `VITE_` 开头。
|
|
92
|
+
|
|
93
|
+
### 2. 代码检查与格式化
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# 运行 ESLint 逻辑检查
|
|
97
|
+
npm run lint
|
|
98
|
+
|
|
99
|
+
# 运行 Prettier 格式化代码 (将会自动格式化 src 目录下的文件)
|
|
100
|
+
npm run format
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3. 生产环境构建与优化
|
|
104
|
+
|
|
105
|
+
本项目针对生产环境 (`build:prod`) 做了深度优化,确保上线的资源体积最小、加载最快:
|
|
106
|
+
- **静态资源 Hash 分类**:JS、CSS、图片等资源分别打包到不同的文件夹,并打上 Hash 戳,完美配合服务器的强缓存策略。
|
|
107
|
+
- **手动分包 (Manual Chunks)**:将体积巨大且变动极少的第三方依赖(如 `react` 核心库、`antd` 组件库、`echarts` 图表库)单独拆分。这样即便你修改了业务代码,用户依然能命中第三方库的浏览器缓存。
|
|
108
|
+
- **代码净化**:自动剔除代码中的 `console` 和 `debugger` 语句,提升性能并保护代码安全。
|
|
109
|
+
|
|
110
|
+
### 4. 构建产物分析 (打包体积分析)
|
|
111
|
+
|
|
112
|
+
如果你想了解每个包(Chunk)的体积大小,排查是否引入了臃肿的依赖,可以运行分析脚本:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
npm run analyze
|
|
116
|
+
```
|
|
117
|
+
该命令会自动执行生产环境构建,并在打包结束后,于浏览器中弹出一个 **交互式的可视化树状图** (`dist/stats.html`),让你对所有产物的原始大小和 Gzip 压缩大小一目了然。
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 💻 业务开发指南
|
|
122
|
+
|
|
123
|
+
### 1. 新增页面
|
|
124
|
+
|
|
125
|
+
1. 在 `src/pages` 下新建文件夹,例如 `src/pages/product`。
|
|
126
|
+
2. 创建 `index.tsx` 并导出默认组件。
|
|
127
|
+
3. 在 `src/router/index.tsx` 中配置路由规则。
|
|
128
|
+
|
|
129
|
+
### 2. 样式开发
|
|
130
|
+
|
|
131
|
+
项目支持 **Less** 预处理器。
|
|
132
|
+
- **全局样式**: 修改 `src/index.css` 或配置 `src/main.tsx` 中的 Ant Design Token。
|
|
133
|
+
- **组件样式**: 推荐使用 `.less` 文件,并在组件中引入。
|
|
134
|
+
```less
|
|
135
|
+
// src/pages/home/index.less
|
|
136
|
+
.home-page {
|
|
137
|
+
padding: 20px;
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 3. 网络请求
|
|
142
|
+
|
|
143
|
+
使用 `src/utils/request` 中导出的 `request` 实例。
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
import { request } from '@/utils/request';
|
|
147
|
+
|
|
148
|
+
// 定义响应类型
|
|
149
|
+
interface UserInfo {
|
|
150
|
+
id: number;
|
|
151
|
+
name: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// 发起请求
|
|
155
|
+
const getUser = () => {
|
|
156
|
+
return request.get<UserInfo>('/api/user/1');
|
|
157
|
+
};
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 4. 状态管理 (Zustand)
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
import { create } from 'zustand';
|
|
164
|
+
|
|
165
|
+
interface UserState {
|
|
166
|
+
name: string;
|
|
167
|
+
setName: (name: string) => void;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export const useUserStore = create<UserState>((set) => ({
|
|
171
|
+
name: 'Guest',
|
|
172
|
+
setName: (name) => set({ name }),
|
|
173
|
+
}));
|
|
174
|
+
|
|
175
|
+
// 在组件中使用
|
|
176
|
+
const { name, setName } = useUserStore();
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## 🎨 设计规范
|
|
180
|
+
|
|
181
|
+
- **主色调**: `#4F46E5` (Indigo)
|
|
182
|
+
- **圆角**: 全局组件圆角 `8px`,卡片圆角 `12px`
|
|
183
|
+
- **布局**: 左侧固定侧边栏 (`240px`) + 顶部通栏
|
|
184
|
+
- **图标**: 使用 `@ant-design/icons`
|
|
185
|
+
|
|
186
|
+
---
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import js from "@eslint/js";
|
|
2
|
+
import globals from "globals";
|
|
3
|
+
import reactHooks from "eslint-plugin-react-hooks";
|
|
4
|
+
import reactRefresh from "eslint-plugin-react-refresh";
|
|
5
|
+
import tseslint from "typescript-eslint";
|
|
6
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
7
|
+
|
|
8
|
+
export default defineConfig([
|
|
9
|
+
globalIgnores(["dist"]),
|
|
10
|
+
{
|
|
11
|
+
files: ["**/*.{ts,tsx}"],
|
|
12
|
+
extends: [
|
|
13
|
+
js.configs.recommended,
|
|
14
|
+
tseslint.configs.recommended,
|
|
15
|
+
reactHooks.configs.flat.recommended,
|
|
16
|
+
reactRefresh.configs.vite,
|
|
17
|
+
],
|
|
18
|
+
languageOptions: {
|
|
19
|
+
ecmaVersion: 2020,
|
|
20
|
+
globals: globals.browser,
|
|
21
|
+
},
|
|
22
|
+
rules: {
|
|
23
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
24
|
+
"react-refresh/only-export-components": "off",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
]);
|