flu-cli 2.0.3 → 2.0.5

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/CHANGELOG.md CHANGED
@@ -2,13 +2,35 @@
2
2
 
3
3
  本项目的所有主要更改都将记录在此文件中。
4
4
 
5
- ## [2.0.3] - 2025-12-12
5
+ ## [2.0.4] - 2026-01-13
6
6
 
7
- ### 更新内容
8
- - 新add 支持本地仓库
7
+ ### 新增特性
8
+
9
+ - **网络层全架构适配**:统一的网络示例支持 Lite、Modular、Clean 三种架构模板
10
+ - **智能网络层选择**:项目创建时可选择是否包含网络层,自动处理依赖注入和文件清理
11
+ - **动态代码片段系统**:基于 VSCode Snippets 的智能代码生成,支持 8+ 种模板类型
12
+ - `flu.stPage` - Stateful 页面(使用 BasePage)
13
+ - `flu.lessPage` - Stateless 简单页面
14
+ - `flu.listPage` / `flu.listViewModel` - 列表页面和 ViewModel
15
+ - `flu.viewmodel` - 通用 ViewModel(使用 BaseViewModel)
16
+ - `flu.model` - 数据模型(含 JSON 序列化)
17
+ - `flu.service` - 服务层
18
+ - `flu.component` - 通用组件
19
+
20
+ ### 优化
21
+
22
+ - **文件生成增强**:多入口支持(右键菜单、编辑器内、命令面板、快捷键),智能路径检测
23
+ - **代码片段智能占位符**:支持 `${relative_core_path}` 等动态变量,根据项目架构自动替换导入路径
24
+ - **网络示例统一维护**:通过占位符动态适配三种架构,避免代码重复
25
+ - **Clean 架构导入优化**:示例代码使用统一的 `data/index.dart` 导出,符合分层原则
9
26
 
27
+ ### 修复
10
28
 
11
- ## [未发布]
29
+ - **修复 Default 状态管理器错误导入**:修复 Default 模式错误导入 provider 包的问题
30
+ - **修复 Modular/Lite 架构导入**:修复网络示例缺少 services 导入的问题
12
31
 
13
- ### 待更新
14
- - 下次发布时自动生成
32
+ ## [2.0.3] - 2025-12-12
33
+
34
+ ### 更新内容
35
+
36
+ - 新add 支持本地仓库
package/CLI.md CHANGED
@@ -41,6 +41,7 @@ flu-cli n [项目名称] # 简写
41
41
  - `-s, --state <type>` - 状态管理器: `default`, `provider`, `getx`, `riverpod`
42
42
  - `-d, --dir <path>` - 项目存放目录(默认:当前目录)
43
43
  - `--no-cache` - 不使用缓存,强制从 Git 拉取
44
+ - `--no-network` - 不包含网络层(默认包含)
44
45
  - `--remote` - 使用远程 Gitee 模板(默认使用本地模板)
45
46
 
46
47
  **说明:**
package/README.md CHANGED
@@ -1,19 +1,49 @@
1
- # flu-cli v2.0
1
+ # flu-cli
2
2
 
3
- > 🚀 **活跃开发中** - Flutter MVVM 脚手架工具
3
+ <p align="center">
4
+ <img src="https://gitee.com/flu-cli/flu-cli/raw/main/packages/vscode-extension/images/icon.png" width="120" alt="flu-cli logo">
5
+ </p>
4
6
 
5
- > 💡 **推荐**: 使用 VSCode 开发?试试我们的 [VSCode 插件](https://marketplace.visualstudio.com/items?itemName=huoye-studio.flu-cli-vscode),支持右键生成代码,体验更丝滑!
7
+ <p align="center">
8
+ <strong>为 Flutter 开发者打造的现代化 MVVM 脚手架工具</strong>
9
+ </p>
6
10
 
7
- ## ✨ 特性
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/flu-cli">
13
+ <img src="https://img.shields.io/npm/v/flu-cli.svg" alt="npm version">
14
+ </a>
15
+ <a href="https://www.npmjs.com/package/flu-cli">
16
+ <img src="https://img.shields.io/npm/dt/flu-cli.svg" alt="npm downloads">
17
+ </a>
18
+ <a href="https://gitee.com/flu-cli/flu-cli/blob/main/LICENSE">
19
+ <img src="https://img.shields.io/npm/l/flu-cli.svg" alt="license">
20
+ </a>
21
+ </p>
8
22
 
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
- - 🌏 **中文友好** - 全中文提示和文档
23
+ <p align="center">
24
+ <a href="https://marketplace.visualstudio.com/items?itemName=huoye-studio.flu-cli-vscode">VSCode 插件</a> |
25
+ <a href="http://huozhiye.cn/flu-cli/">官方文档</a> |
26
+ <a href="#-加入社区">加入社区</a>
27
+ </p>
28
+
29
+ ---
30
+
31
+ ## 🌟 为什么选择 Flu CLI
32
+
33
+ Flu CLI 让 Flutter 项目创建和代码生成变得简单高效,从零到生产只需几分钟。
34
+
35
+ ### 核心亮点
36
+
37
+ - **🎯 交互式向导**:现代化 CLI 交互体验,所有选择一目了然
38
+ - **🏗 多架构模板**:Lite(轻量)、Modular(模块化)、Clean(整洁架构),开箱即用
39
+ - **🌐 智能网络层**:可选集成 Dio + 网络工具 + 真实示例,按需引入
40
+ - **🧩 多状态管理**:Provider、GetX 一键切换,自动配置
41
+ - **⚡️ 快速生成**:Page、ViewModel、Widget、Service、Model 全覆盖
42
+ - **🎨 资源管理**:可视化配置应用图标与启动图
43
+ - **📝 代码片段**:内置 8+ 种智能模板,自动同步到 VSCode
44
+ - **🔧 灵活定制**:支持 Git 仓库或本地文件夹作为自定义模板
45
+
46
+ ---
17
47
 
18
48
  ## 📦 安装
19
49
 
@@ -21,93 +51,135 @@
21
51
  npm install -g flu-cli
22
52
  ```
23
53
 
54
+ > 要求:Node.js >= 14.0.0 + Flutter SDK
55
+
56
+ ---
57
+
24
58
  ## 🚀 快速开始
25
59
 
60
+ ### 1️⃣ 创建项目
61
+
26
62
  ```bash
27
- # 创建新项目
28
- flu-cli new my_app
29
- # 或使用别名
30
- flu n my_app
63
+ flu new my_app
64
+ ```
65
+
66
+ **向导会引导你选择**:
67
+
68
+ - 架构模板(Lite / Modular / Clean / 自定义)
69
+ - 状态管理(Provider / GetX)
70
+ - 是否包含网络层(Dio + 示例代码)
31
71
 
32
- # 指定模板和状态管理
33
- flu n my_app -t modular -s getx
72
+ ### 2️⃣ 生成代码
34
73
 
35
- # 添加页面(自动生成 ViewModel)
36
- cd my_app
74
+ ```bash
75
+ # 生成页面(包含 View + ViewModel)
37
76
  flu add page home
38
- # 或使用别名
39
- flu a p home
40
77
 
41
- # 添加列表页(自动生成 Page + ViewModel + Model)
42
- flu a p user_list --list-page
78
+ # 生成列表页面(自动包含分页逻辑)
79
+ flu add page user_list --list-page
43
80
 
44
- # 添加服务
45
- flu a s api --type api
81
+ # 生成其他类型
82
+ flu add widget button_widget
83
+ flu add service user_service
84
+ flu add model user
85
+ ```
46
86
 
47
- # 同步代码片段
48
- flu sync-snippets
87
+ ### 3️⃣ 配置现有项目
49
88
 
50
- # 生成自动补全脚本
51
- flu-cli completion >> ~/.zshrc && source ~/.zshrc
89
+ ```bash
90
+ cd my_existing_project
91
+ flu config init
52
92
  ```
53
93
 
54
- ## 📚 命令别名
94
+ 自动检测项目结构,生成 `.flu-cli.json` 配置文件。
55
95
 
56
- ### add 类型别名
96
+ ### 4️⃣ 自定义模板
57
97
 
58
- - `p` = page
59
- - `w` = widget
60
- - `c` = component
61
- - `v` = viewmodel
62
- - `s` = service
63
- - `m` = model
64
- - `mod` = module
98
+ ```bash
99
+ # 添加 Git 仓库模板
100
+ flu template add my-tpl https://github.com/my/template.git
65
101
 
66
- ### 顶级命令别名
102
+ # 添加本地模板
103
+ flu template add local-tpl /path/to/template --local
67
104
 
68
- - `n` = new
69
- - `a` = add
70
- - `t` = templates
71
- - `u` = update-templates
72
- - `c` = cache
73
- - `sync` = sync-snippets
74
- - `comp` = completion
105
+ # 使用自定义模板创建项目
106
+ flu new my_app -t my-tpl
107
+ ```
75
108
 
76
- ## ❓ 获取帮助
109
+ ---
77
110
 
78
- 查看所有命令:
111
+ ## 📚 命令速查
112
+
113
+ | 命令 | 别名 | 说明 |
114
+ | ----------------------------- | ------ | -------------- |
115
+ | `flu new <name>` | `n` | 创建新项目 |
116
+ | `flu add page <name>` | `a p` | 生成页面 |
117
+ | `flu add widget <name>` | `a w` | 生成组件 |
118
+ | `flu add service <name>` | `a s` | 生成服务 |
119
+ | `flu add model <name>` | `a m` | 生成模型 |
120
+ | `flu template add <id> <url>` | - | 添加自定义模板 |
121
+ | `flu template list` | - | 查看模板列表 |
122
+ | `flu config init` | `conf` | 初始化项目配置 |
123
+ | `flu assets` | - | 配置应用资源 |
124
+ | `flu sync-snippets` | `sync` | 同步代码片段 |
125
+
126
+ > 使用 `flu <command> --help` 查看详细参数
127
+
128
+ ---
129
+
130
+ ## 🧩 推荐:VSCode 插件
131
+
132
+ 配合 **Flu CLI VSCode Extension** 使用,体验翻倍!
133
+
134
+ **插件特性**:
135
+
136
+ - ✨ 右键菜单快速生成代码
137
+ - 🎨 可视化管理项目资源
138
+ - ⌨️ 快捷键 `Cmd+Shift+G` (Mac) / `Ctrl+Shift+G` (Windows) 唤起生成面板
139
+ - 📝 智能代码片段,根据架构动态适配
140
+
141
+ 👉 [点击安装 VSCode 插件](https://marketplace.visualstudio.com/items?itemName=huoye-studio.flu-cli-vscode)
142
+
143
+ ---
144
+
145
+ ## 💡 使用技巧
146
+
147
+ ### 快速创建带网络层的项目
79
148
 
80
149
  ```bash
81
- flu-cli --help
150
+ flu new my_app
151
+ # 选择 Lite 模板 → Provider → 包含网络层
152
+ # 一分钟后,完整的 MVVM 项目就绪!
82
153
  ```
83
154
 
84
- 查看特定命令的详细用法:
155
+ ### 同步最新代码片段
85
156
 
86
157
  ```bash
87
- flu add --help
88
- flu new --help
158
+ flu sync-snippets
89
159
  ```
90
160
 
91
- ## 📚 文档
161
+ 自动升级项目中的 VSCode 代码片段到最新版本(8+ 种智能模板)。
92
162
 
93
- - [CLI 命令参考](http://huozhiye.cn/flu-cli/reference/cli-reference.html) - 详细命令说明
94
- - [完整文档](http://huozhiye.cn/flu-cli/) - 主文档站
163
+ ### 查看所有模板
95
164
 
96
- ## 💬 加入社区
165
+ ```bash
166
+ flu template list
167
+ ```
97
168
 
98
- 获取最新动态、反馈问题、定制化开发或与开发者直接交流,欢迎加入我们的微信群:
169
+ ---
170
+
171
+ ## 💬 加入社区
99
172
 
100
- > ![微信群二维码](https://gitee.com/flu-cli/flu-cli/raw/main/packages/vscode-extension/images/wechat-group.png)
173
+ 获取最新动态、反馈问题或与开发者交流:
101
174
 
102
- 如果群二维码过期,请添加作者微信 `Huoye-TT` 备注 "flu-cli" 拉您入群。
175
+ <p align="left">
176
+ <img src="https://gitee.com/flu-cli/flu-cli/raw/main/packages/vscode-extension/images/wechat-group.png" alt="微信二维码" width="200"/>
177
+ </p>
103
178
 
104
- ## 🔗 相关链接
179
+ > 二维码过期请添加作者微信 `Huoye-TT`,备注 "flu-cli"
105
180
 
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)
181
+ ---
109
182
 
110
-
111
- ## 📄 许可
183
+ ## 📄 License
112
184
 
113
- MIT License - Copyright © 2025 火叶工作室
185
+ MIT License - Copyright © 2026 火叶工作室
@@ -1,135 +1,13 @@
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
- },
1
+ import { BUILTIN_TEMPLATES } from 'flu-cli-core';
76
2
 
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
- };
3
+ export const TEMPLATES = BUILTIN_TEMPLATES;
127
4
 
128
5
  /**
129
6
  * 获取模板配置
130
7
  */
131
8
  export function getTemplate (name) {
132
- return TEMPLATES[name];
9
+ if (!name) return undefined;
10
+ return TEMPLATES[name.toLowerCase()];
133
11
  }
134
12
 
135
13
  /**
@@ -143,5 +21,6 @@ export function getAllTemplates () {
143
21
  * 验证模板名称
144
22
  */
145
23
  export function isValidTemplate (name) {
146
- return name in TEMPLATES;
24
+ if (!name) return false;
25
+ return name.toLowerCase() in TEMPLATES;
147
26
  }