flu-cli 0.0.4 → 2.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.
- package/CLI.md +349 -0
- package/README.md +59 -155
- package/config/dev.config.js +56 -0
- package/config/templates.js +147 -0
- package/index.js +128 -81
- package/lib/commands/add.js +472 -0
- package/lib/commands/cache.js +99 -0
- package/lib/commands/completion.js +94 -0
- package/lib/commands/generate.js +26 -0
- package/lib/commands/newClack.js +396 -0
- package/lib/commands/snippets.js +39 -0
- package/lib/commands/templates.js +84 -0
- package/lib/generators/component_generator.js +93 -0
- package/lib/generators/model_generator.js +303 -0
- package/lib/generators/module_generator.js +141 -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 +200 -0
- package/package.json +31 -6
- 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 +487 -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/CLI.md
ADDED
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# Flu-CLI v2 命令参考
|
|
2
|
+
|
|
3
|
+
> Flutter MVVM 脚手架工具 - 快速生成项目和代码
|
|
4
|
+
|
|
5
|
+
## 快速开始
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 创建新项目
|
|
9
|
+
flu-cli new my_app
|
|
10
|
+
|
|
11
|
+
# 添加页面
|
|
12
|
+
flu-cli add page home
|
|
13
|
+
|
|
14
|
+
# 查看帮助
|
|
15
|
+
flu-cli --help
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 命令列表
|
|
19
|
+
|
|
20
|
+
### 1. `new` - 创建项目
|
|
21
|
+
|
|
22
|
+
创建一个新的 Flutter 项目,支持多种模板和状态管理器。
|
|
23
|
+
|
|
24
|
+
**用法:**
|
|
25
|
+
```bash
|
|
26
|
+
flu-cli new [项目名称] [选项]
|
|
27
|
+
flu-cli n [项目名称] # 简写
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**选项:**
|
|
31
|
+
- `-t, --template <type>` - 模板类型: `lite`, `modular`, `clean`
|
|
32
|
+
- `-s, --state <type>` - 状态管理器: `default`, `provider`, `getx`, `riverpod`
|
|
33
|
+
- `-d, --dir <path>` - 项目存放目录(默认:当前目录)
|
|
34
|
+
- `--no-cache` - 不使用缓存,强制从 Git 拉取
|
|
35
|
+
- `--remote` - 使用远程 Gitee 模板(默认使用本地模板)
|
|
36
|
+
|
|
37
|
+
**示例:**
|
|
38
|
+
```bash
|
|
39
|
+
# 交互式创建(推荐)
|
|
40
|
+
flu-cli new
|
|
41
|
+
|
|
42
|
+
# 指定项目名和模板
|
|
43
|
+
flu-cli new my_app -t lite
|
|
44
|
+
|
|
45
|
+
# 指定状态管理器
|
|
46
|
+
flu-cli new my_app -s getx
|
|
47
|
+
|
|
48
|
+
# 完整配置
|
|
49
|
+
flu-cli new my_app -t modular -s provider -d ~/projects
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### 2. `add` - 添加组件
|
|
55
|
+
|
|
56
|
+
在当前项目中添加各种代码组件。
|
|
57
|
+
|
|
58
|
+
**用法:**
|
|
59
|
+
```bash
|
|
60
|
+
flu-cli add <类型> <名称> [选项]
|
|
61
|
+
flu-cli a <类型> <名称> # 简写
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**支持的类型及别名:**
|
|
65
|
+
|
|
66
|
+
| 类型 | 别名 | 说明 |
|
|
67
|
+
|------|------|------|
|
|
68
|
+
| `page` | `p` | 页面组件 |
|
|
69
|
+
| `widget` | `w` | 通用组件 |
|
|
70
|
+
| `component` | `c` | 业务组件 |
|
|
71
|
+
| `viewmodel` | `v` | ViewModel |
|
|
72
|
+
| `service` | `s` | 服务层 |
|
|
73
|
+
| `model` | `m` | 数据模型 |
|
|
74
|
+
| `module` | `mod` | 完整功能模块 |
|
|
75
|
+
|
|
76
|
+
**选项:**
|
|
77
|
+
- `-f, --feature <name>` - 所属功能模块(仅 modular/clean 模式)
|
|
78
|
+
- `--stateful` - 创建 StatefulWidget
|
|
79
|
+
- `--stateless` - 强制创建 StatelessWidget
|
|
80
|
+
- `--list-page` - 创建列表页 (BaseListPage)
|
|
81
|
+
- `--no-vm` - 不生成 ViewModel(仅 page 类型)
|
|
82
|
+
- `--type <type>` - Service 类型: `api`, `storage`, `auth`(仅 service 类型)
|
|
83
|
+
- `--json <file>` - 从 JSON 文件生成(仅 model 类型)
|
|
84
|
+
- `--list` - 查看支持的类型列表
|
|
85
|
+
|
|
86
|
+
**示例:**
|
|
87
|
+
```bash
|
|
88
|
+
# 添加页面(自动生成 ViewModel)
|
|
89
|
+
flu-cli add page home
|
|
90
|
+
flu-cli add p home # 简写
|
|
91
|
+
|
|
92
|
+
# 添加列表页
|
|
93
|
+
flu-cli add page user_list --list-page
|
|
94
|
+
|
|
95
|
+
# 添加无状态页面
|
|
96
|
+
flu-cli add page about --stateless --no-vm
|
|
97
|
+
|
|
98
|
+
# 添加组件
|
|
99
|
+
flu-cli add widget custom_button
|
|
100
|
+
flu-cli add w custom_button # 简写
|
|
101
|
+
|
|
102
|
+
# 添加 Service
|
|
103
|
+
flu-cli add service api --type api
|
|
104
|
+
flu-cli add s auth --type auth # 简写 + 指定类型
|
|
105
|
+
|
|
106
|
+
# 添加 Model
|
|
107
|
+
flu-cli add model user
|
|
108
|
+
flu-cli add m user # 简写
|
|
109
|
+
|
|
110
|
+
# 在功能模块下添加(modular/clean 模式)
|
|
111
|
+
flu-cli add page product -f shop
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### 3. `templates` - 模板管理
|
|
117
|
+
|
|
118
|
+
查看可用模板列表或指定模板的详细信息。
|
|
119
|
+
|
|
120
|
+
**用法:**
|
|
121
|
+
```bash
|
|
122
|
+
flu-cli templates [模板名称]
|
|
123
|
+
flu-cli t [模板名称] # 简写
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**示例:**
|
|
127
|
+
```bash
|
|
128
|
+
# 查看所有模板
|
|
129
|
+
flu-cli templates
|
|
130
|
+
|
|
131
|
+
# 查看指定模板详情
|
|
132
|
+
flu-cli templates lite
|
|
133
|
+
flu-cli t modular # 简写
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### 4. `generate-sm` - 生成状态管理代码
|
|
139
|
+
|
|
140
|
+
为现有项目生成状态管理适配与配置。
|
|
141
|
+
|
|
142
|
+
**用法:**
|
|
143
|
+
```bash
|
|
144
|
+
flu-cli generate-sm <类型>
|
|
145
|
+
flu-cli g <类型> # 简写
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**选项:**
|
|
149
|
+
- `-d, --dir <path>` - 项目目录(默认:当前目录)
|
|
150
|
+
- `-m, --module <name>` - 模块名称(modular/clean 支持分模块适配器)
|
|
151
|
+
|
|
152
|
+
**示例:**
|
|
153
|
+
```bash
|
|
154
|
+
# 生成 Provider 状态管理
|
|
155
|
+
flu-cli generate-sm provider
|
|
156
|
+
|
|
157
|
+
# 生成 GetX 状态管理
|
|
158
|
+
flu-cli g getx # 简写
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
### 5. `sync-snippets` - 同步代码片段
|
|
164
|
+
|
|
165
|
+
将最新的标准 VS Code 代码片段同步到当前项目。
|
|
166
|
+
|
|
167
|
+
**用法:**
|
|
168
|
+
```bash
|
|
169
|
+
flu-cli sync-snippets
|
|
170
|
+
flu-cli sync # 简写
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**说明:**
|
|
174
|
+
- 该命令会覆盖项目的 `.vscode/dart.code-snippets` 文件。
|
|
175
|
+
- 新项目创建时会自动同步,无需手动执行。
|
|
176
|
+
|
|
177
|
+
**示例:**
|
|
178
|
+
```bash
|
|
179
|
+
# 同步标准代码片段
|
|
180
|
+
flu-cli sync-snippets
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### 6. `update-templates` - 更新模板缓存
|
|
186
|
+
|
|
187
|
+
更新本地模板缓存到最新版本。
|
|
188
|
+
|
|
189
|
+
**用法:**
|
|
190
|
+
```bash
|
|
191
|
+
flu-cli update-templates [模板名称]
|
|
192
|
+
flu-cli u [模板名称] # 简写
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**选项:**
|
|
196
|
+
- `--force` - 强制刷新并清理未跟踪文件
|
|
197
|
+
|
|
198
|
+
**示例:**
|
|
199
|
+
```bash
|
|
200
|
+
# 更新所有模板
|
|
201
|
+
flu-cli update-templates
|
|
202
|
+
|
|
203
|
+
# 更新指定模板
|
|
204
|
+
flu-cli u lite # 简写
|
|
205
|
+
|
|
206
|
+
# 强制刷新
|
|
207
|
+
flu-cli update-templates --force
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### 7. `cache` - 缓存管理
|
|
213
|
+
|
|
214
|
+
管理本地模板缓存。
|
|
215
|
+
|
|
216
|
+
**用法:**
|
|
217
|
+
```bash
|
|
218
|
+
flu-cli cache <action>
|
|
219
|
+
flu-cli c <action> # 简写
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**支持的操作:**
|
|
223
|
+
- `clean` - 清理缓存
|
|
224
|
+
|
|
225
|
+
**示例:**
|
|
226
|
+
```bash
|
|
227
|
+
# 清理缓存
|
|
228
|
+
flu-cli cache clean
|
|
229
|
+
flu-cli c clean # 简写
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
### 8. `completion` - 自动补全
|
|
235
|
+
|
|
236
|
+
生成 Shell 自动补全脚本(支持 Bash/Zsh)。
|
|
237
|
+
|
|
238
|
+
**用法:**
|
|
239
|
+
```bash
|
|
240
|
+
flu-cli completion
|
|
241
|
+
flu-cli comp # 简写
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**安装方法:**
|
|
245
|
+
```bash
|
|
246
|
+
# Zsh
|
|
247
|
+
flu-cli completion >> ~/.zshrc
|
|
248
|
+
source ~/.zshrc
|
|
249
|
+
|
|
250
|
+
# Bash
|
|
251
|
+
flu-cli completion >> ~/.bashrc
|
|
252
|
+
source ~/.bashrc
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 常见工作流
|
|
258
|
+
|
|
259
|
+
### 创建新项目
|
|
260
|
+
```bash
|
|
261
|
+
flu-cli new my_app
|
|
262
|
+
cd my_app
|
|
263
|
+
flutter pub get
|
|
264
|
+
flu-cli add page home
|
|
265
|
+
flu-cli add page user_list --list-page
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### 在现有项目中使用
|
|
269
|
+
```bash
|
|
270
|
+
cd existing_project
|
|
271
|
+
|
|
272
|
+
# 同步代码片段
|
|
273
|
+
flu-cli sync-snippets
|
|
274
|
+
|
|
275
|
+
# 添加组件
|
|
276
|
+
flu-cli add page settings
|
|
277
|
+
flu-cli add service api --type api
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Modular 架构项目
|
|
281
|
+
```bash
|
|
282
|
+
flu-cli new my_app -t modular
|
|
283
|
+
cd my_app
|
|
284
|
+
|
|
285
|
+
# 在 shop 模块下添加页面
|
|
286
|
+
flu-cli add page product -f shop
|
|
287
|
+
flu-cli add page cart -f shop
|
|
288
|
+
|
|
289
|
+
# 在 user 模块下添加页面
|
|
290
|
+
flu-cli add page profile -f user
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## 全局选项
|
|
296
|
+
|
|
297
|
+
所有命令都支持以下选项:
|
|
298
|
+
- `-V, --version` - 查看版本号
|
|
299
|
+
- `-h, --help` - 查看帮助信息
|
|
300
|
+
|
|
301
|
+
**示例:**
|
|
302
|
+
```bash
|
|
303
|
+
flu-cli --version
|
|
304
|
+
flu-cli add --help
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 配置文件
|
|
310
|
+
|
|
311
|
+
Flu-CLI 会在以下位置存储配置:
|
|
312
|
+
- **缓存目录**: `~/.flu-cli/cache/`
|
|
313
|
+
- **配置文件**: `~/.flu-cli/config.json`
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## 故障排除
|
|
318
|
+
|
|
319
|
+
### 命令卡住
|
|
320
|
+
如果命令执行过程中卡住,可以:
|
|
321
|
+
1. 按 `Ctrl+C` 中止
|
|
322
|
+
2. 运行 `flu-cli cache clean` 清理缓存
|
|
323
|
+
3. 重新执行命令
|
|
324
|
+
|
|
325
|
+
### 模板拉取失败
|
|
326
|
+
```bash
|
|
327
|
+
# 清理缓存后重试
|
|
328
|
+
flu-cli cache clean
|
|
329
|
+
flu-cli new my_app
|
|
330
|
+
|
|
331
|
+
# 或使用本地模板(开发环境)
|
|
332
|
+
flu-cli new my_app --no-cache
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### 代码片段不生效
|
|
336
|
+
```bash
|
|
337
|
+
# 重新同步代码片段
|
|
338
|
+
flu-cli sync-snippets
|
|
339
|
+
|
|
340
|
+
# 重启 VS Code 后生效
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## 更多帮助
|
|
346
|
+
|
|
347
|
+
- 查看具体命令帮助:`flu-cli <command> --help`
|
|
348
|
+
- 项目文档:[flu-cli 文档站](https://your-docs-url)
|
|
349
|
+
- 问题反馈:[GitHub Issues](https://github.com/your-repo/issues)
|
package/README.md
CHANGED
|
@@ -1,182 +1,86 @@
|
|
|
1
|
-
#
|
|
1
|
+
# flu-cli v2.0
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> 🚀 **活跃开发中** - Flutter MVVM 脚手架工具
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## ✨ 特性
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
- **自动化配置**:自动处理包名替换、项目命名和依赖管理
|
|
16
|
-
- **开发环境集成**:自动配置VSCode开发环境(代码风格、调试配置、扩展推荐)
|
|
17
|
-
- **依赖包管理**:支持通过Git仓库自动集成常用工具库和网络请求库
|
|
18
|
-
- **IDE自动打开**:创建完成后可自动在VSCode或Android Studio中打开项目
|
|
19
|
-
- **跨平台支持**:兼容Windows、macOS和Linux操作系统
|
|
7
|
+
- 🎯 **交互式创建** - `flu new` 命令提供友好的交互式体验
|
|
8
|
+
- 🔧 **代码生成** - `flu add` 快速生成页面、组件、服务等(支持别名)
|
|
9
|
+
- 📦 **多种模板** - lite、modular、clean 三种架构模板
|
|
10
|
+
- 🎮 **状态管理** - 支持 default、provider、getx、riverpod
|
|
11
|
+
- 📝 **基于 Snippets** - 可自定义 VSCode 代码片段
|
|
12
|
+
- 🎨 **列表页支持** - `--list-page` 自动生成 Page/ViewModel/Model
|
|
13
|
+
- 🚀 **智能补全** - Shell 自动补全(Zsh/Bash)
|
|
14
|
+
- 🌏 **中文友好** - 全中文提示和文档
|
|
20
15
|
|
|
21
|
-
## 安装
|
|
22
|
-
|
|
23
|
-
### 全局安装
|
|
16
|
+
## 📦 安装
|
|
24
17
|
|
|
25
18
|
```bash
|
|
26
19
|
npm install -g flu-cli
|
|
27
20
|
```
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npm install flu-cli
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## 使用方法
|
|
36
|
-
|
|
37
|
-
### 命令行使用
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# 如果全局安装
|
|
41
|
-
flu-cli
|
|
42
|
-
|
|
43
|
-
# 或者使用 npx
|
|
44
|
-
npx flu-cli
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### 创建新项目
|
|
22
|
+
## 🚀 快速开始
|
|
48
23
|
|
|
49
24
|
```bash
|
|
50
|
-
|
|
51
|
-
|
|
25
|
+
# 创建新项目
|
|
26
|
+
flu-cli new my_app
|
|
27
|
+
# 或使用别名
|
|
28
|
+
flu n my_app
|
|
52
29
|
|
|
53
|
-
|
|
30
|
+
# 指定模板和状态管理
|
|
31
|
+
flu n my_app -t modular -s getx
|
|
54
32
|
|
|
55
|
-
|
|
33
|
+
# 添加页面(自动生成 ViewModel)
|
|
34
|
+
cd my_app
|
|
35
|
+
flu add page home
|
|
36
|
+
# 或使用别名
|
|
37
|
+
flu a p home
|
|
56
38
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
flu-cli create --project-type app --template-type pro --state-manager GetX --project-name my_flutter_app --package-name com.example.myapp --parent-dir ~/your projects path --ide vscode
|
|
60
|
-
|
|
61
|
-
# 创建模块项目(标准模板+State状态管理 + Android Studio)
|
|
62
|
-
flu-cli create --project-type module --template-type normal --state-manager state --project-name my_flutter_module --package-name com.example.mymodule --parent-dir ~/your projects path --ide android_studio
|
|
63
|
-
|
|
64
|
-
# 最小化模板快速创建
|
|
65
|
-
flu-cli create --project-type app --template-type min --project-name quick_start --package-name com.example.quick --parent-dir ~/your projects path
|
|
39
|
+
# 添加列表页(自动生成 Page + ViewModel + Model)
|
|
40
|
+
flu a p user_list --list-page
|
|
66
41
|
|
|
67
|
-
#
|
|
68
|
-
flu
|
|
69
|
-
```
|
|
42
|
+
# 添加服务
|
|
43
|
+
flu a s api --type api
|
|
70
44
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
| 参数 | 说明 | 可选值 |
|
|
74
|
-
| --project-type | 项目类型 | app, module, package, plugin |
|
|
75
|
-
| --template-type | 模板类型 | only, min, normal, pro |
|
|
76
|
-
| --state-manager | 状态管理方案 | state, GetX, |
|
|
77
|
-
| --project-name | 项目名称 | 小写字母、数字和下划线组合 |
|
|
78
|
-
| --package-name | 包名 | 类似Java包名格式,如com.example.app |
|
|
79
|
-
| --parent-dir | 存放目录 | 绝对路径或相对路径 |
|
|
80
|
-
| --ide | IDE选择 | vscode, android_studio, open_folder, manual |
|
|
81
|
-
| --flutter-sdk | Flutter SDK路径 | 默认为系统环境变量中的flutter |
|
|
82
|
-
|
|
83
|
-
按照提示完成以下步骤:
|
|
84
|
-
|
|
85
|
-
1. **选择项目类型**:应用(app)、模块(module)、包(package)或插件(plugin)
|
|
86
|
-
2. **选择模板类型**:基础(only)、最小(min)、标准(normal)或高级(pro)
|
|
87
|
-
3. **选择状态管理**:根据模板类型选择合适的状态管理方案(高级模板需要)
|
|
88
|
-
4. **输入项目信息**:项目名称、包名和存放路径
|
|
89
|
-
5. **确认配置**:确认项目信息和覆盖选项
|
|
90
|
-
6. **选择IDE**:选择用于打开项目的IDE
|
|
91
|
-
|
|
92
|
-
## 模板详情
|
|
93
|
-
|
|
94
|
-
### 仅基础项目(only)
|
|
95
|
-
- 包含Flutter官方创建的基础项目结构
|
|
96
|
-
- 仅保留核心文件:`main.dart`、`pubspec.yaml`和基础目录结构
|
|
97
|
-
- 适用于快速测试或需要完全自定义项目结构的场景
|
|
98
|
-
|
|
99
|
-
### 最小模板(min)
|
|
100
|
-
- 基于基础项目扩展,增加以下功能:
|
|
101
|
-
- 路由管理:使用`auto_route`实现路由配置和导航
|
|
102
|
-
- 主题管理:支持亮色/暗色主题切换
|
|
103
|
-
- 基础工具类:包含常用字符串、日期处理方法
|
|
104
|
-
|
|
105
|
-
### 标准模板(normal)
|
|
106
|
-
- 基于最小模板扩展,增加以下功能:
|
|
107
|
-
- 状态管理:根据选择集成对应状态管理库
|
|
108
|
-
- UI组件库:基础按钮、输入框、列表项等常用组件
|
|
109
|
-
- 网络请求:基于`dio`的基础网络请求封装
|
|
110
|
-
- 本地存储:使用`shared_preferences`实现简单数据存储
|
|
111
|
-
|
|
112
|
-
### 高级模板(pro)
|
|
113
|
-
- 基于标准模板扩展,增加以下功能:
|
|
114
|
-
- 完整网络层:请求拦截、响应处理、错误统一管理
|
|
115
|
-
- 数据缓存:实现网络数据缓存策略
|
|
116
|
-
- 业务模块划分:按功能模块组织代码结构
|
|
117
|
-
- 示例功能:包含登录、列表等示例页面
|
|
118
|
-
- 依赖注入:使用`get_it`实现服务定位
|
|
119
|
-
|
|
120
|
-
## 项目结构
|
|
45
|
+
# 同步代码片段
|
|
46
|
+
flu sync-snippets
|
|
121
47
|
|
|
48
|
+
# 生成自动补全脚本
|
|
49
|
+
flu-cli completion >> ~/.zshrc && source ~/.zshrc
|
|
122
50
|
```
|
|
123
|
-
flutter-cli/
|
|
124
|
-
├── index.js # 主入口文件
|
|
125
|
-
├── package.json # 项目配置
|
|
126
|
-
├── README.md # 项目说明文档
|
|
127
|
-
└── lib/ # 核心功能模块
|
|
128
|
-
├── createProject.js # 项目创建主流程协调
|
|
129
|
-
├── userInteraction.js # 用户交互功能(输入、选择、确认)
|
|
130
|
-
├── flutterProjectCreator.js # Flutter项目创建(执行flutter create命令)
|
|
131
|
-
├── libCopier.js # 模板文件复制和处理
|
|
132
|
-
├── utils.js # 工具函数(验证、格式化、IDE打开等)
|
|
133
|
-
└── desktopPath.js # 桌面路径获取
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### 核心模块说明
|
|
137
51
|
|
|
138
|
-
|
|
139
|
-
- **userInteraction.js**:提供所有交互式功能,包括获取项目类型、模板类型、状态管理、项目信息等
|
|
140
|
-
- **flutterProjectCreator.js**:执行`flutter create`命令创建基础项目,处理不同项目类型参数
|
|
141
|
-
- **libCopier.js**:负责模板文件复制、占位符替换和Git仓库克隆操作
|
|
142
|
-
- **utils.js**:提供各种辅助功能,如名称验证、彩色输出、README生成和IDE自动打开
|
|
52
|
+
## 📚 命令别名
|
|
143
53
|
|
|
144
|
-
|
|
54
|
+
### add 类型别名
|
|
55
|
+
- `p` = page
|
|
56
|
+
- `w` = widget
|
|
57
|
+
- `c` = component
|
|
58
|
+
- `v` = viewmodel
|
|
59
|
+
- `s` = service
|
|
60
|
+
- `m` = model
|
|
61
|
+
- `mod` = module
|
|
145
62
|
|
|
146
|
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
63
|
+
### 顶级命令别名
|
|
64
|
+
- `n` = new
|
|
65
|
+
- `a` = add
|
|
66
|
+
- `t` = templates
|
|
67
|
+
- `g` = generate-sm
|
|
68
|
+
- `u` = update-templates
|
|
69
|
+
- `c` = cache
|
|
70
|
+
- `sync` = sync-snippets
|
|
71
|
+
- `comp` = completion
|
|
152
72
|
|
|
153
|
-
##
|
|
73
|
+
## 📚 文档
|
|
154
74
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
# 克隆仓库
|
|
159
|
-
git clone https://gitee.com/tengteng_fan/flutter-cli.git
|
|
160
|
-
cd flutter-cli
|
|
161
|
-
|
|
162
|
-
# 安装依赖
|
|
163
|
-
npm install
|
|
164
|
-
|
|
165
|
-
# 链接到全局
|
|
166
|
-
npm link
|
|
167
|
-
|
|
168
|
-
# 测试运行
|
|
169
|
-
flu-cli
|
|
170
|
-
```
|
|
75
|
+
- [CLI 命令参考](./CLI.md) - 详细命令说明
|
|
76
|
+
- [完整文档](http://huozhiye.cn/flu-cli/) - 主文档站
|
|
171
77
|
|
|
172
|
-
##
|
|
78
|
+
## 🔗 相关链接
|
|
173
79
|
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
- 高级模板可能需要较长时间下载依赖,请耐心等待
|
|
178
|
-
- 如遇权限问题,在命令前添加`sudo`(macOS/Linux)或使用管理员权限运行终端(Windows)
|
|
80
|
+
- [模板对比](http://huozhiye.cn/flu-cli/guide/templates/template-comparison)
|
|
81
|
+
- [最佳实践](http://huozhiye.cn/flu-cli/best-practices/custom-templates)
|
|
82
|
+
- [从 V1 迁移](http://huozhiye.cn/flu-cli/examples/migration)
|
|
179
83
|
|
|
180
|
-
##
|
|
84
|
+
## 📄 许可
|
|
181
85
|
|
|
182
|
-
MIT
|
|
86
|
+
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
|
+
}
|