flu-cli 0.0.5 → 2.0.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.
- package/CLI.md +512 -0
- package/README.md +70 -260
- package/config/dev.config.js +56 -0
- package/config/templates.js +147 -0
- package/index.js +177 -81
- package/lib/commands/add.js +595 -0
- package/lib/commands/cache.js +99 -0
- package/lib/commands/completion.js +92 -0
- package/lib/commands/config.js +70 -0
- package/lib/commands/newClack.js +399 -0
- package/lib/commands/snippets.js +39 -0
- package/lib/commands/template.js +113 -0
- package/lib/commands/templates.js +84 -0
- package/lib/generators/model_generator.js +303 -0
- package/lib/generators/page_generator.js +322 -0
- package/lib/generators/project_generator.js +96 -0
- package/lib/generators/service_generator.js +408 -0
- package/lib/generators/state_manager_generator.js +402 -0
- package/lib/generators/viewmodel_generator.js +115 -0
- package/lib/generators/widget_generator.js +104 -0
- package/lib/templates/templateCopier.js +296 -0
- package/lib/templates/templateManager.js +191 -0
- package/lib/utils/config.js +99 -0
- package/lib/utils/flutterHelper.js +85 -0
- package/lib/utils/index_updater.js +69 -0
- package/lib/utils/logger.js +57 -0
- package/lib/utils/project_detector.js +227 -0
- package/lib/utils/snippet_loader.js +32 -0
- package/lib/utils/string_helper.js +56 -0
- package/lib/utils/templateSelectorEnquirer.js +203 -0
- package/package.json +34 -7
- package/release.sh +107 -0
- package/scripts/e2e-state-tests.js +116 -0
- package/scripts/sync-base-to-templates.js +108 -0
- package/scripts/workspace-clone-all.sh +101 -0
- package/scripts/workspace-status-all.sh +112 -0
- package/templates/README.md +138 -0
- package/templates/base_files/base_list_page.dart.template +174 -0
- package/templates/base_files/base_list_viewmodel.dart.template +134 -0
- package/templates/base_files/base_page.dart.template +251 -0
- package/templates/base_files/base_viewmodel.dart.template +77 -0
- package/templates/base_files/theme/status_views_theme.dart.template +46 -0
- package/templates/snippets/dart.code-snippets +392 -0
- package/lib/createProject.js +0 -220
- package/lib/flutterProjectCreator.js +0 -80
- package/lib/libCopier.js +0 -368
- package/lib/userInteraction.js +0 -274
- package/lib/utils.js +0 -200
- package/publish.sh +0 -29
package/README.md
CHANGED
|
@@ -1,303 +1,113 @@
|
|
|
1
|
-
#
|
|
1
|
+
# flu-cli v2.0
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 🚀 **活跃开发中** - Flutter MVVM 脚手架工具
|
|
4
4
|
|
|
5
|
-
[
|
|
6
|
-
[](https://gitee.com/tengteng_fan/flutter-cli/blob/main/LICENSE)
|
|
7
|
-
[](https://www.npmjs.com/package/flu-cli)
|
|
5
|
+
> 💡 **推荐**: 使用 VSCode 开发?试试我们的 [VSCode 插件](https://marketplace.visualstudio.com/items?itemName=flu-cli.flu-cli-vscode),支持右键生成代码,体验更丝滑!
|
|
8
6
|
|
|
9
|
-
##
|
|
7
|
+
## ✨ 特性
|
|
10
8
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
- [📚 进阶指南](#-进阶指南)
|
|
20
|
-
- [🔧 兼容性说明](#-兼容性说明)
|
|
21
|
-
|
|
22
|
-
## 🚀 快速开始
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# 全局安装
|
|
26
|
-
npm install -g flu-cli
|
|
27
|
-
|
|
28
|
-
# 创建项目
|
|
29
|
-
flu-cli
|
|
30
|
-
|
|
31
|
-
# 或使用 npx(无需安装)
|
|
32
|
-
npx flu-cli
|
|
33
|
-
```
|
|
9
|
+
- 🎯 **交互式创建** - `flu new` 命令提供友好的交互式体验
|
|
10
|
+
- 🔧 **代码生成** - `flu add` 快速生成页面、组件、服务等(支持别名)
|
|
11
|
+
- 📦 **多种模板** - lite、modular、clean 三种架构模板
|
|
12
|
+
- 🎮 **状态管理** - 支持 default、provider、getx、riverpod
|
|
13
|
+
- 📝 **基于 Snippets** - 可自定义 VSCode 代码片段
|
|
14
|
+
- 🎨 **列表页支持** - `--list-page` 自动生成 Page/ViewModel/Model
|
|
15
|
+
- 🚀 **智能补全** - Shell 自动补全(Zsh/Bash)
|
|
16
|
+
- 🌏 **中文友好** - 全中文提示和文档
|
|
34
17
|
|
|
35
18
|
## 📦 安装
|
|
36
19
|
|
|
37
|
-
您可以通过以下方式安装 flu-cli:
|
|
38
|
-
|
|
39
|
-
| 安装方式 | NPM | PNPM | Yarn |
|
|
40
|
-
| -------------- | ------------------------ | --------------------- | ------------------------- |
|
|
41
|
-
| **全局安装** | `npm install -g flu-cli` | `pnpm add -g flu-cli` | `yarn global add flu-cli` |
|
|
42
|
-
| **项目内安装** | `npm install flu-cli` | `pnpm add flu-cli` | `yarn add flu-cli` |
|
|
43
|
-
|
|
44
|
-
> 💡 **推荐使用全局安装**,这样可以在任何地方使用 `flu-cli` 命令。
|
|
45
|
-
|
|
46
|
-
## 🛠️ 使用方法
|
|
47
|
-
|
|
48
|
-
### 交互式向导
|
|
49
|
-
|
|
50
|
-
flu-cli 附带一个命令行设置向导,它将帮助您构建一个基本项目。安装后,您可以通过运行以下命令启动向导:
|
|
51
|
-
|
|
52
20
|
```bash
|
|
53
|
-
|
|
54
|
-
flu-cli
|
|
55
|
-
|
|
56
|
-
# 或者使用 npx
|
|
57
|
-
npx flu-cli
|
|
21
|
+
npm install -g flu-cli
|
|
58
22
|
```
|
|
59
23
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<details>
|
|
63
|
-
<summary>📋 向导示例(点击展开)</summary>
|
|
24
|
+
## 🚀 快速开始
|
|
64
25
|
|
|
65
26
|
```bash
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
模块 (module)
|
|
71
|
-
原生插件 (plugin)
|
|
72
|
-
插件 (package)
|
|
73
|
-
|
|
74
|
-
? 请选择项目模版: (Use arrow keys)
|
|
75
|
-
only (main.dart)
|
|
76
|
-
min (项目结构、路由管理、主题管理、状态管理、工具集)
|
|
77
|
-
normal (项目结构、路由管理、主题管理、状态管理、工具集、UI 组件库)
|
|
78
|
-
❯ pro (项目结构、路由管理、主题管理、状态管理、工具集、UI 组件库、网络请求、数据缓存、示例模块)
|
|
79
|
-
|
|
80
|
-
? 请选择状态管理: (Use arrow keys)
|
|
81
|
-
❯ state (State)
|
|
82
|
-
get (GetX)
|
|
83
|
-
|
|
84
|
-
? 请输入新项目名称(小写字母、数字和下划线): (hzy_example_project)
|
|
85
|
-
? 请输入 Flutter SDK 路径(留空使用系统默认):
|
|
86
|
-
? 请输入包名: (com.example.hzy_example_project)
|
|
87
|
-
? 请输入项目存放路径: (默认: 当前目录)
|
|
88
|
-
|
|
89
|
-
⚠️ 警告: 目标目录 hzy_example_project 已存在!
|
|
90
|
-
? 是否覆盖? (y/N)
|
|
91
|
-
|
|
92
|
-
? 请选择要打开项目的 IDE: (Use arrow keys)
|
|
93
|
-
❯ Visual Studio Code
|
|
94
|
-
Android Studio
|
|
95
|
-
打开文件夹
|
|
96
|
-
不打开
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
</details>
|
|
100
|
-
|
|
101
|
-
### 项目模版对比
|
|
102
|
-
|
|
103
|
-
| 功能特性 | 🔹 only | 🔸 min | 🔶 normal | 🔥 pro |
|
|
104
|
-
| :----------------------- | :-----: | :----: | :-------: | :----: |
|
|
105
|
-
| **基础入口 (main.dart)** | ✅ | ✅ | ✅ | ✅ |
|
|
106
|
-
| **标准项目结构** | ❌ | ✅ | ✅ | ✅ |
|
|
107
|
-
| **路由管理系统** | ❌ | ✅ | ✅ | ✅ |
|
|
108
|
-
| **主题管理系统** | ❌ | ✅ | ✅ | ✅ |
|
|
109
|
-
| **状态管理方案** | ❌ | ✅ | ✅ | ✅ |
|
|
110
|
-
| **开发工具集** | ❌ | ✅ | ✅ | ✅ |
|
|
111
|
-
| **UI 组件库** | ❌ | ❌ | ✅ | ✅ |
|
|
112
|
-
| **网络请求框架** | ❌ | ❌ | ❌ | ✅ |
|
|
113
|
-
| **数据持久化** | ❌ | ❌ | ❌ | ✅ |
|
|
27
|
+
# 创建新项目
|
|
28
|
+
flu-cli new my_app
|
|
29
|
+
# 或使用别名
|
|
30
|
+
flu n my_app
|
|
114
31
|
|
|
115
|
-
|
|
32
|
+
# 指定模板和状态管理
|
|
33
|
+
flu n my_app -t modular -s getx
|
|
116
34
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
35
|
+
# 添加页面(自动生成 ViewModel)
|
|
36
|
+
cd my_app
|
|
37
|
+
flu add page home
|
|
38
|
+
# 或使用别名
|
|
39
|
+
flu a p home
|
|
121
40
|
|
|
122
|
-
|
|
41
|
+
# 添加列表页(自动生成 Page + ViewModel + Model)
|
|
42
|
+
flu a p user_list --list-page
|
|
123
43
|
|
|
124
|
-
|
|
44
|
+
# 添加服务
|
|
45
|
+
flu a s api --type api
|
|
125
46
|
|
|
126
|
-
|
|
47
|
+
# 同步代码片段
|
|
48
|
+
flu sync-snippets
|
|
127
49
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
flu-cli create [options]
|
|
50
|
+
# 生成自动补全脚本
|
|
51
|
+
flu-cli completion >> ~/.zshrc && source ~/.zshrc
|
|
132
52
|
```
|
|
133
53
|
|
|
134
|
-
|
|
54
|
+
## 📚 命令别名
|
|
135
55
|
|
|
136
|
-
|
|
56
|
+
### add 类型别名
|
|
137
57
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
58
|
+
- `p` = page
|
|
59
|
+
- `w` = widget
|
|
60
|
+
- `c` = component
|
|
61
|
+
- `v` = viewmodel
|
|
62
|
+
- `s` = service
|
|
63
|
+
- `m` = model
|
|
64
|
+
- `mod` = module
|
|
141
65
|
|
|
142
|
-
|
|
66
|
+
### 顶级命令别名
|
|
143
67
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
68
|
+
- `n` = new
|
|
69
|
+
- `a` = add
|
|
70
|
+
- `t` = templates
|
|
71
|
+
- `u` = update-templates
|
|
72
|
+
- `c` = cache
|
|
73
|
+
- `sync` = sync-snippets
|
|
74
|
+
- `comp` = completion
|
|
147
75
|
|
|
148
|
-
|
|
76
|
+
## ❓ 获取帮助
|
|
149
77
|
|
|
150
|
-
|
|
151
|
-
flu-cli create -t app -m min -n quick_start -p com.example.quick -d ~/projects
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
##### 🔹 Only 模版
|
|
78
|
+
查看所有命令:
|
|
155
79
|
|
|
156
80
|
```bash
|
|
157
|
-
flu-cli
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
##### 默认配置(使用向导)
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
flu-cli create
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
#### 参数说明
|
|
167
|
-
|
|
168
|
-
| 参数 | 说明 | 可选值 | 必选 | 示例 |
|
|
169
|
-
| :-------------------- | :--------------- | :-------------------------------------------------- | :--- | :--------------------- |
|
|
170
|
-
| `-t, --project-type` | 项目类型 | `app`, `module`, `package`, `plugin` | ✅ | `-t app` |
|
|
171
|
-
| `-m, --template-type` | 模板类型 | `only`, `min`, `normal`, `pro` | ✅ | `-m pro` |
|
|
172
|
-
| `-s, --state-manager` | 状态管理方案 | `state`, `GetX`, `Riverpod` | ❌ | `-s GetX` |
|
|
173
|
-
| `-n, --project-name` | 项目名称 | 小写字母、数字和下划线组合 | ✅ | `-n my_app` |
|
|
174
|
-
| `-p, --package-name` | 包名 | 类似 Java 包名格式 | ✅ | `-p com.example.myapp` |
|
|
175
|
-
| `-d, --parent-dir` | 存放目录 | 绝对路径或相对路径 | ❌ | `-d ~/projects` |
|
|
176
|
-
| `-i, --ide` | IDE 选择 | `vscode`, `android_studio`, `open_folder`, `manual` | ❌ | `-i vscode` |
|
|
177
|
-
| `-f, --flutter-sdk` | Flutter SDK 路径 | 默认为系统环境变量中的 flutter | ❌ | `-f /path/to/flutter` |
|
|
178
|
-
| `-h, --help` | 显示帮助信息 | - | ❌ | `--help` |
|
|
179
|
-
|
|
180
|
-
> 📚 有关更多命令行用法的文档,请参阅 [CLI 参考文档](http://huozhiye.cn/flu-cli/eg/cli-des.html)。
|
|
181
|
-
|
|
182
|
-
## 📁 项目结构
|
|
183
|
-
|
|
184
|
-
以下是基于 **GetX** 的完整商业项目结构,清晰的项目结构有助于团队协作和代码维护。
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
📦 your_project_name/
|
|
188
|
-
├── 📁 .vscode/ # VS Code 配置文件
|
|
189
|
-
│ ├── 📄 extensions.json # 插件推荐
|
|
190
|
-
│ ├── 📄 launch.json # 调试配置
|
|
191
|
-
│ ├── 📄 settings.json # 编辑器设置
|
|
192
|
-
│ └── 📄 dart.code-snippets # 代码片段
|
|
193
|
-
├── 📁 assets/ # 静态资源文件
|
|
194
|
-
│ ├── 📁 fonts/ # 字体文件
|
|
195
|
-
│ ├── 📁 images/ # 图片资源
|
|
196
|
-
│ └── 📁 json/ # 本地数据
|
|
197
|
-
├── 📁 lib/ # 项目核心代码
|
|
198
|
-
│ ├── 📁 common/ # 公共组件和工具
|
|
199
|
-
│ ├── 📁 config/ # 应用配置
|
|
200
|
-
│ ├── 📁 eg_module/ # 示例模块
|
|
201
|
-
│ ├── 📁 init/ # 初始化逻辑
|
|
202
|
-
│ ├── 📄 main.dart # 应用入口文件
|
|
203
|
-
│ ├── 📁 models/ # 数据模型
|
|
204
|
-
│ ├── 📁 network/ # 网络请求
|
|
205
|
-
│ ├── 📁 pages/ # 页面文件
|
|
206
|
-
│ ├── 📁 tools/ # 工具类
|
|
207
|
-
│ ├── 📁 vm/ # 视图模型
|
|
208
|
-
│ └── 📁 widgets/ # UI 组件
|
|
209
|
-
├── 📄 pubspec.yaml # 项目配置文件
|
|
210
|
-
├── 📄 analysis_options.yaml # 代码分析配置
|
|
211
|
-
└── 📄 README.md # 项目说明文档
|
|
81
|
+
flu-cli --help
|
|
212
82
|
```
|
|
213
83
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
| 目录/文件 | 说明 | 用途 |
|
|
217
|
-
| ----------------- | ------------ | ---------------------------------- |
|
|
218
|
-
| 📁 `.vscode/` | VS Code 配置 | 包含编辑器配置、调试设置和代码片段 |
|
|
219
|
-
| 📁 `assets/` | 静态资源 | 存放图片、字体、本地数据等资源文件 |
|
|
220
|
-
| 📁 `lib/common/` | 公共模块 | 公共组件、工具类、常量定义 |
|
|
221
|
-
| 📁 `lib/config/` | 应用配置 | 环境配置、主题配置、路由配置 |
|
|
222
|
-
| 📁 `lib/network/` | 网络层 | HTTP 请求、API 接口、数据处理 |
|
|
223
|
-
| 📁 `lib/pages/` | 页面 | 应用的各个页面和子页面 |
|
|
224
|
-
| 📁 `lib/widgets/` | UI 组件 | 可复用的自定义 Widget 组件 |
|
|
225
|
-
| 📁 `lib/models/` | 数据模型 | 实体类、数据传输对象 |
|
|
226
|
-
| 📁 `lib/vm/` | 视图模型 | 状态管理、业务逻辑处理 |
|
|
227
|
-
|
|
228
|
-
## 🏃 运行与调试
|
|
229
|
-
|
|
230
|
-
### 基本运行步骤
|
|
84
|
+
查看特定命令的详细用法:
|
|
231
85
|
|
|
232
86
|
```bash
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
# 2. 获取依赖包
|
|
237
|
-
flutter pub get
|
|
238
|
-
|
|
239
|
-
# 3. 运行项目(开发模式)
|
|
240
|
-
flutter run
|
|
241
|
-
|
|
242
|
-
# 4. 构建发布版本
|
|
243
|
-
flutter build apk # Android
|
|
244
|
-
flutter build ios # iOS
|
|
87
|
+
flu add --help
|
|
88
|
+
flu new --help
|
|
245
89
|
```
|
|
246
90
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
| 工具 | 用途 | 推荐指数 |
|
|
250
|
-
| ------------------------ | -------------- | ---------- |
|
|
251
|
-
| 🔧 **VS Code** | 轻量级编辑器 | ⭐⭐⭐⭐⭐ |
|
|
252
|
-
| 🔧 **Android Studio** | 功能完整的 IDE | ⭐⭐⭐⭐ |
|
|
253
|
-
| 🔧 **Flutter Inspector** | UI 调试工具 | ⭐⭐⭐⭐⭐ |
|
|
254
|
-
| 🔧 **Dart DevTools** | 性能分析工具 | ⭐⭐⭐⭐ |
|
|
255
|
-
|
|
256
|
-
## 📚 进阶指南
|
|
257
|
-
|
|
258
|
-
🎉 恭喜您完成了 `flu-cli` 的基础配置!
|
|
259
|
-
|
|
260
|
-
### 🚀 推荐后续操作
|
|
261
|
-
|
|
262
|
-
- 📖 **深入学习**:查看 [高级特性文档](http://huozhiye.cn/flu-cli/tutorial/base-normal-ui.html)
|
|
263
|
-
- 🤝 **项目模版**:访问 [仓库](https://gitee.com/tengteng_fan/hzy_basic_project)
|
|
264
|
-
- 📚 **官方文档**:[flu-cli 完整文档](http://huozhiye.cn/flu-cli/)
|
|
265
|
-
- 💬 **社区支持**:加入开发者交流群
|
|
266
|
-
|
|
267
|
-
### 📖 相关资源
|
|
268
|
-
|
|
269
|
-
- [Flutter 官方文档](https://flutter.dev/docs)
|
|
270
|
-
- [GetX 状态管理](https://github.com/jonataslaw/getx)
|
|
271
|
-
- [Dart 语言指南](https://dart.dev/guides)
|
|
272
|
-
|
|
273
|
-
---
|
|
91
|
+
## 📚 文档
|
|
274
92
|
|
|
275
|
-
|
|
93
|
+
- [CLI 命令参考](http://huozhiye.cn/flu-cli/reference/cli-reference.html) - 详细命令说明
|
|
94
|
+
- [完整文档](http://huozhiye.cn/flu-cli/) - 主文档站
|
|
276
95
|
|
|
277
|
-
|
|
96
|
+
## 💬 加入社区
|
|
278
97
|
|
|
279
|
-
|
|
280
|
-
| --------------- | ------------- | ------------- | ------- |
|
|
281
|
-
| 🐦 **Flutter** | 3.0.0+ | 3.16.0+ | ✅ 支持 |
|
|
282
|
-
| 🟢 **Node.js** | 14.0.0+ | 18.0.0+ | ✅ 支持 |
|
|
283
|
-
| 🖥️ **操作系统** | - | - | - |
|
|
284
|
-
| └─ Windows | 10+ | 11 | ✅ 支持 |
|
|
285
|
-
| └─ macOS | 10.14+ | 13.0+ | ✅ 支持 |
|
|
286
|
-
| └─ Linux | Ubuntu 18.04+ | Ubuntu 22.04+ | ✅ 支持 |
|
|
98
|
+
获取最新动态、反馈问题、定制化开发或与开发者直接交流,欢迎加入我们的微信群:
|
|
287
99
|
|
|
288
|
-
|
|
100
|
+
> 
|
|
289
101
|
|
|
290
|
-
-
|
|
291
|
-
- ✅ **iOS** 11.0+
|
|
292
|
-
- ✅ **Web** (Chrome, Safari, Firefox)
|
|
293
|
-
- ✅ **Desktop** (Windows, macOS, Linux)
|
|
102
|
+
如果群二维码过期,请添加作者微信 `Huoye-TT` 备注 "flu-cli" 拉您入群。
|
|
294
103
|
|
|
295
|
-
|
|
104
|
+
## 🔗 相关链接
|
|
296
105
|
|
|
297
|
-
|
|
106
|
+
- [模板对比](http://huozhiye.cn/flu-cli/guide/templates/template-comparison.html)
|
|
107
|
+
- [最佳实践](http://huozhiye.cn/flu-cli/best-practices/custom-templates.html)
|
|
108
|
+
- [从 V1 迁移](http://huozhiye.cn/flu-cli/examples/migration.html)
|
|
298
109
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
[](https://gitee.com/tengteng_fan/flutter-cli)
|
|
110
|
+
|
|
111
|
+
## 📄 许可
|
|
302
112
|
|
|
303
|
-
|
|
113
|
+
MIT License - Copyright © 2025 火叶工作室
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 开发配置文件
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ 注意:此文件仅用于开发测试
|
|
5
|
+
* 发布到 npm 时会被忽略(通过 .npmignore)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const DEV_CONFIG = {
|
|
9
|
+
/**
|
|
10
|
+
* 是否使用本地模板
|
|
11
|
+
*
|
|
12
|
+
* - true: 优先使用 templates/ 目录下的本地模板(开发模式)
|
|
13
|
+
* - false: 强制使用 Git 仓库模板(生产模式)
|
|
14
|
+
*
|
|
15
|
+
* 默认:根据环境变量 NODE_ENV 自动判断
|
|
16
|
+
*/
|
|
17
|
+
useLocalTemplates: process.env.NODE_ENV !== 'production',
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* 本地模板目录路径
|
|
21
|
+
* 相对于项目根目录
|
|
22
|
+
*/
|
|
23
|
+
localTemplatesPath: './templates',
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 是否显示调试信息
|
|
27
|
+
*/
|
|
28
|
+
debug: process.env.DEBUG === 'true',
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 是否跳过 Flutter 环境检查(仅开发模式)
|
|
32
|
+
*/
|
|
33
|
+
skipFlutterCheck: false
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 获取配置
|
|
38
|
+
* 发布版本会强制使用 Git 模板
|
|
39
|
+
*/
|
|
40
|
+
export function getConfig () {
|
|
41
|
+
// 检查是否为发布版本
|
|
42
|
+
const isProduction = process.env.NODE_ENV === 'production' || !DEV_CONFIG.useLocalTemplates;
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
...DEV_CONFIG,
|
|
46
|
+
useLocalTemplates: isProduction ? false : DEV_CONFIG.useLocalTemplates,
|
|
47
|
+
isProduction
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* 检查是否为开发模式
|
|
53
|
+
*/
|
|
54
|
+
export function isDevelopment () {
|
|
55
|
+
return getConfig().useLocalTemplates;
|
|
56
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模板配置文件
|
|
3
|
+
* 定义所有可用的项目模板
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const TEMPLATES = {
|
|
7
|
+
lite: {
|
|
8
|
+
name: 'Lite',
|
|
9
|
+
displayName: 'Lite - 精简版',
|
|
10
|
+
description: '最小依赖,单文件结构,适合小型项目和快速原型',
|
|
11
|
+
local: true,
|
|
12
|
+
repo: 'https://gitee.com/flu-cli/template-lite.git',
|
|
13
|
+
branch: 'main',
|
|
14
|
+
complexity: 1,
|
|
15
|
+
teamSize: '1 人',
|
|
16
|
+
codeSize: '< 5k 行',
|
|
17
|
+
features: [
|
|
18
|
+
'✅ 最小依赖',
|
|
19
|
+
'✅ 单文件结构',
|
|
20
|
+
'✅ Material 3 设计',
|
|
21
|
+
'✅ 快速启动'
|
|
22
|
+
],
|
|
23
|
+
structure: `
|
|
24
|
+
lib/
|
|
25
|
+
├── 📄 main.dart # 应用入口
|
|
26
|
+
├── 📄 app.dart # 应用配置
|
|
27
|
+
├── 📁 pages/ # 页面
|
|
28
|
+
├── 📁 viewmodels/ # 视图模型
|
|
29
|
+
├── 📁 widgets/ # 简单组件
|
|
30
|
+
├── 📁 components/ # 复合组件
|
|
31
|
+
├── 📁 services/ # 业务服务
|
|
32
|
+
├── 📁 models/ # 数据模型
|
|
33
|
+
├── 📁 config/ # 配置
|
|
34
|
+
└── 📁 utils/ # 工具类
|
|
35
|
+
`
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
modular: {
|
|
39
|
+
name: 'Modular',
|
|
40
|
+
displayName: 'Modular - 模块化版',
|
|
41
|
+
description: '模块化结构,功能分组,适合中型项目',
|
|
42
|
+
local: true,
|
|
43
|
+
repo: 'https://gitee.com/flu-cli/template-modular.git',
|
|
44
|
+
branch: 'main',
|
|
45
|
+
complexity: 3,
|
|
46
|
+
teamSize: '2-5 人',
|
|
47
|
+
codeSize: '5k-20k 行',
|
|
48
|
+
features: [
|
|
49
|
+
'✅ 模块化结构',
|
|
50
|
+
'✅ 路由配置独立',
|
|
51
|
+
'✅ 主题配置独立',
|
|
52
|
+
'✅ 功能分组'
|
|
53
|
+
],
|
|
54
|
+
structure: `
|
|
55
|
+
lib/
|
|
56
|
+
├── 📄 main.dart
|
|
57
|
+
├── 📁 core/ # 核心基础设施
|
|
58
|
+
│ ├── theme/ # 主题系统
|
|
59
|
+
│ ├── router/ # 路由系统
|
|
60
|
+
│ ├── constants/ # 常量定义
|
|
61
|
+
│ └── base/ # 基础类(BaseViewModel, BasePage)
|
|
62
|
+
├── 📁 shared/ # 跨模块共享
|
|
63
|
+
│ ├── widgets/ # 通用简单组件
|
|
64
|
+
│ ├── components/ # 通用复合组件
|
|
65
|
+
│ ├── models/ # 通用数据模型
|
|
66
|
+
│ └── utils/ # 通用工具类
|
|
67
|
+
└── 📁 features/ # 业务功能模块
|
|
68
|
+
├── hoem/ # 用户模块
|
|
69
|
+
│ ├── pages/
|
|
70
|
+
│ ├── viewmodels/
|
|
71
|
+
│ ├── widgets/
|
|
72
|
+
│ ├── services/
|
|
73
|
+
└── └── models/
|
|
74
|
+
`
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
clean: {
|
|
78
|
+
name: 'Clean',
|
|
79
|
+
displayName: 'Clean - 分层版',
|
|
80
|
+
description: '严格分层架构,清晰的目录结构,适合大型项目',
|
|
81
|
+
local: true,
|
|
82
|
+
repo: 'https://gitee.com/flu-cli/template-clean.git',
|
|
83
|
+
branch: 'main',
|
|
84
|
+
complexity: 5,
|
|
85
|
+
teamSize: '5+ 人',
|
|
86
|
+
codeSize: '> 20k 行',
|
|
87
|
+
features: [
|
|
88
|
+
'✅ 严格分层架构',
|
|
89
|
+
'✅ 清晰的目录结构',
|
|
90
|
+
'✅ 易于扩展和维护',
|
|
91
|
+
'✅ 适合团队协作'
|
|
92
|
+
],
|
|
93
|
+
structure: `
|
|
94
|
+
lib/
|
|
95
|
+
├── 📄 main.dart # 应用入口
|
|
96
|
+
├── 📄 app.dart # 应用配置
|
|
97
|
+
├── 📁 core/ # 核心层(最内层)
|
|
98
|
+
│ ├── constants/ # 常量定义
|
|
99
|
+
│ ├── errors/ # 错误和异常
|
|
100
|
+
│ ├── usecases/ # UseCase 基类
|
|
101
|
+
│ ├── utils/ # 工具类
|
|
102
|
+
│ └── network/ # 网络配置
|
|
103
|
+
├── 📁 features/ # 功能模块(按业务划分)
|
|
104
|
+
│ └── home/ # 示例:首页模块
|
|
105
|
+
│ ├── data/ # 数据层
|
|
106
|
+
│ │ ├── datasources/ # 数据源(API/本地)
|
|
107
|
+
│ │ ├── models/ # 数据模型(DTO)
|
|
108
|
+
│ │ └── repositories/ # Repository 实现
|
|
109
|
+
│ ├── domain/ # 领域层
|
|
110
|
+
│ │ ├── entities/ # 业务实体
|
|
111
|
+
│ │ ├── repositories/ # Repository 接口
|
|
112
|
+
│ │ └── usecases/ # 用例(业务逻辑)
|
|
113
|
+
│ └── presentation/ # 表现层
|
|
114
|
+
│ ├── pages/ # 页面
|
|
115
|
+
│ ├── widgets/ # 模块专用组件
|
|
116
|
+
│ └── viewmodels/ # 视图模型
|
|
117
|
+
├── 📁 shared/ # 共享资源
|
|
118
|
+
│ ├── widgets/ # 通用组件
|
|
119
|
+
│ ├── components/ # 通用复合组件
|
|
120
|
+
│ └── extensions/ # 扩展方法
|
|
121
|
+
└── 📁 config/ # 配置层
|
|
122
|
+
├── routes/ # 路由配置
|
|
123
|
+
└── theme/ # 主题配置
|
|
124
|
+
`
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* 获取模板配置
|
|
130
|
+
*/
|
|
131
|
+
export function getTemplate (name) {
|
|
132
|
+
return TEMPLATES[name];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* 获取所有模板
|
|
137
|
+
*/
|
|
138
|
+
export function getAllTemplates () {
|
|
139
|
+
return Object.values(TEMPLATES);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* 验证模板名称
|
|
144
|
+
*/
|
|
145
|
+
export function isValidTemplate (name) {
|
|
146
|
+
return name in TEMPLATES;
|
|
147
|
+
}
|