flu-cli 2.0.6 → 2.1.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +17 -4
  3. package/config/dev.config.js +11 -11
  4. package/config/templates.js +10 -10
  5. package/index.js +554 -102
  6. package/lib/commands/add.js +365 -266
  7. package/lib/commands/assets.js +77 -78
  8. package/lib/commands/cache.js +29 -52
  9. package/lib/commands/completion.js +13 -11
  10. package/lib/commands/config.js +150 -44
  11. package/lib/commands/init-ai-base.js +89 -0
  12. package/lib/commands/newClack.js +269 -178
  13. package/lib/commands/snippets.js +58 -43
  14. package/lib/commands/template.js +98 -58
  15. package/lib/commands/templates.js +101 -57
  16. package/lib/commands/upload.js +313 -0
  17. package/lib/commands/vnext-options.js +206 -0
  18. package/lib/generators/model_generator.js +91 -88
  19. package/lib/generators/page_generator.js +100 -93
  20. package/lib/generators/service_generator.js +44 -39
  21. package/lib/generators/viewmodel_generator.js +25 -29
  22. package/lib/generators/widget_generator.js +30 -35
  23. package/lib/templates/templateCopier.js +14 -15
  24. package/lib/templates/templateManager.js +22 -21
  25. package/lib/utils/config.js +37 -20
  26. package/lib/utils/flutterHelper.js +2 -2
  27. package/lib/utils/i18n.js +3 -3
  28. package/lib/utils/index_updater.js +22 -23
  29. package/lib/utils/json-output.js +59 -0
  30. package/lib/utils/logger.js +17 -17
  31. package/lib/utils/project_detector.js +66 -66
  32. package/lib/utils/snippet_loader.js +21 -19
  33. package/lib/utils/string_helper.js +13 -13
  34. package/lib/utils/templateSelectorEnquirer.js +94 -108
  35. package/locales/en-US.json +1 -1
  36. package/locales/zh-CN.json +2 -2
  37. package/package.json +60 -57
  38. package/scripts/smoke-vnext-generate.mjs +1934 -0
  39. package/scripts/smoke-vnext-params.mjs +92 -0
  40. package/CLI.md +0 -513
  41. package/release.sh +0 -529
  42. package/scripts/e2e-state-tests.js +0 -116
  43. package/scripts/sync-base-to-templates.js +0 -108
  44. package/scripts/workspace-clone-all.sh +0 -101
  45. package/scripts/workspace-status-all.sh +0 -112
package/CHANGELOG.md CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  本项目的所有主要更改都将记录在此文件中。
4
4
 
5
+ ## [2.1.0] - 2026-06-10
6
+
7
+ ### 新增特性
8
+
9
+ - **create-project vNext 组合式创建**:`flu new` 支持结构模板 + 能力层 + helpers + Base/Mixin 组合 + 顶层示例 + 平台/SDK + 资源的组合式生成
10
+ - **能力层**:Network(含网络状态监听)、WebView、Permission、ImagePicker、Payment、Serialization;启用 helper 自动补 Android/iOS/鸿蒙最小权限
11
+ - **Mixin 链路**:`flu add page/vm/service --mixins ...` 可在生成文件中按需写入候选 Mixin
12
+ - **创建即可跑**:非鸿蒙 FVM 项目创建后自动 `flutter pub get`(失败仅降级提示);`base` / `base_mixins + Network` 生成并继承 `BaseService`
13
+
14
+ ### 优化 / 修复
15
+
16
+ - `flu new ... --json` 创建链路与普通链路返回一致,恢复机器可读输出
17
+ - 示例与能力解耦,未选示例时不注入示例页;`networkGallery` 才生成网络示例闭环
18
+
19
+ ## [2.0.7] - 2026-04-20
20
+
21
+ ### 新增特性
22
+
23
+ - **AI + SKILL(规则投影闭环)**:
24
+ - `flu-cli init-ai-base`:初始化/修补 `.flu-cli.json` 并生成 AI 规则产物
25
+ - `flu-cli sync-rules`:从 `.flu-cli.json` 投影生成 Cursor/Claude/通用 SKILL 规则文件
26
+ - **统一 `--json` 输出协议**:支持命令以 `{ ok, command, diagnostics, data }` 的结构输出,便于 VSCode/Webview/脚本消费(避免解析彩色日志)
27
+
5
28
  ## [2.0.4] - 2026-01-13
6
29
 
7
30
  ### 新增特性
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # flu-cli
2
2
 
3
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">
4
+ <img src="https://gitee.com/flu-cli/flu-cli/raw/master/packages/vscode-extension/images/icon.png" width="120" alt="flu-cli logo">
5
5
  </p>
6
6
 
7
7
  <p align="center">
8
- <strong>为 Flutter 开发者打造的现代化 MVVM 脚手架工具</strong>
8
+ <strong>为 Flutter 开发者打造的全流程效率工具链</strong>
9
9
  </p>
10
10
 
11
11
  <p align="center">
@@ -34,7 +34,7 @@ Flu CLI 让 Flutter 项目创建和代码生成变得简单高效,从零到生
34
34
 
35
35
  ### 核心亮点
36
36
 
37
- - **🎯 交互式向导**:现代化 CLI 交互体验,所有选择一目了然
37
+ - **🤖 AI 原生协作**:一键生成 Cursor/Claude 规则,让 AI 懂你的项目规范
38
38
  - **🏗 多架构模板**:Lite(轻量)、Modular(模块化)、Clean(整洁架构),开箱即用
39
39
  - **🌐 智能网络层**:可选集成 Dio + 网络工具 + 真实示例,按需引入
40
40
  - **🧩 多状态管理**:Provider、GetX 一键切换,自动配置
@@ -122,6 +122,8 @@ flu new my_app -t my-tpl
122
122
  | `flu config init` | `conf` | 初始化项目配置 |
123
123
  | `flu assets` | - | 配置应用资源 |
124
124
  | `flu sync-snippets` | `sync` | 同步代码片段 |
125
+ | `flu sync-rules` | `sr` | 同步 AI 规则 |
126
+ | `flu init-ai-base` | `iab` | 初始化 AI 基座 |
125
127
 
126
128
  > 使用 `flu <command> --help` 查看详细参数
127
129
 
@@ -152,6 +154,17 @@ flu new my_app
152
154
  # 一分钟后,完整的 MVVM 项目就绪!
153
155
  ```
154
156
 
157
+ ### 初始化 AI 基座并生成项目 SKILL
158
+
159
+ ```bash
160
+ cd my_existing_project
161
+ flu init-ai-base
162
+ flu sync-rules
163
+ ```
164
+
165
+ - `init-ai-base`:创建/修补 `.flu-cli.json`
166
+ - `sync-rules`:生成 `.cursor/rules/flu-project.mdc`、`CLAUDE.md`、`AI_RULES.md`、`.agent/skills/<slug>/SKILL.md`
167
+
155
168
  ### 同步最新代码片段
156
169
 
157
170
  ```bash
@@ -173,7 +186,7 @@ flu template list
173
186
  获取最新动态、反馈问题或与开发者交流:
174
187
 
175
188
  <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"/>
189
+ <img src="https://gitee.com/flu-cli/flu-cli/raw/master/packages/vscode-extension/images/wechat-group.png" alt="微信二维码" width="200"/>
177
190
  </p>
178
191
 
179
192
  > 二维码过期请添加作者微信 `Huoye-TT`,备注 "flu-cli"
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * 开发配置文件
3
- *
3
+ *
4
4
  * ⚠️ 注意:此文件仅用于开发测试
5
5
  * 发布到 npm 时会被忽略(通过 .npmignore)
6
6
  */
@@ -8,10 +8,10 @@
8
8
  export const DEV_CONFIG = {
9
9
  /**
10
10
  * 是否使用本地模板
11
- *
11
+ *
12
12
  * - true: 优先使用 templates/ 目录下的本地模板(开发模式)
13
13
  * - false: 强制使用 Git 仓库模板(生产模式)
14
- *
14
+ *
15
15
  * 默认:根据环境变量 NODE_ENV 自动判断
16
16
  */
17
17
  useLocalTemplates: process.env.NODE_ENV !== 'production',
@@ -30,27 +30,27 @@ export const DEV_CONFIG = {
30
30
  /**
31
31
  * 是否跳过 Flutter 环境检查(仅开发模式)
32
32
  */
33
- skipFlutterCheck: false
34
- };
33
+ skipFlutterCheck: false,
34
+ }
35
35
 
36
36
  /**
37
37
  * 获取配置
38
38
  * 发布版本会强制使用 Git 模板
39
39
  */
40
- export function getConfig () {
40
+ export function getConfig() {
41
41
  // 检查是否为发布版本
42
- const isProduction = process.env.NODE_ENV === 'production' || !DEV_CONFIG.useLocalTemplates;
42
+ const isProduction = process.env.NODE_ENV === 'production' || !DEV_CONFIG.useLocalTemplates
43
43
 
44
44
  return {
45
45
  ...DEV_CONFIG,
46
46
  useLocalTemplates: isProduction ? false : DEV_CONFIG.useLocalTemplates,
47
- isProduction
48
- };
47
+ isProduction,
48
+ }
49
49
  }
50
50
 
51
51
  /**
52
52
  * 检查是否为开发模式
53
53
  */
54
- export function isDevelopment () {
55
- return getConfig().useLocalTemplates;
54
+ export function isDevelopment() {
55
+ return getConfig().useLocalTemplates
56
56
  }
@@ -1,26 +1,26 @@
1
- import { BUILTIN_TEMPLATES } from 'flu-cli-core';
1
+ import { BUILTIN_TEMPLATES } from 'flu-cli-core'
2
2
 
3
- export const TEMPLATES = BUILTIN_TEMPLATES;
3
+ export const TEMPLATES = BUILTIN_TEMPLATES
4
4
 
5
5
  /**
6
6
  * 获取模板配置
7
7
  */
8
- export function getTemplate (name) {
9
- if (!name) return undefined;
10
- return TEMPLATES[name.toLowerCase()];
8
+ export function getTemplate(name) {
9
+ if (!name) return undefined
10
+ return TEMPLATES[name.toLowerCase()]
11
11
  }
12
12
 
13
13
  /**
14
14
  * 获取所有模板
15
15
  */
16
- export function getAllTemplates () {
17
- return Object.values(TEMPLATES);
16
+ export function getAllTemplates() {
17
+ return Object.values(TEMPLATES)
18
18
  }
19
19
 
20
20
  /**
21
21
  * 验证模板名称
22
22
  */
23
- export function isValidTemplate (name) {
24
- if (!name) return false;
25
- return name.toLowerCase() in TEMPLATES;
23
+ export function isValidTemplate(name) {
24
+ if (!name) return false
25
+ return name.toLowerCase() in TEMPLATES
26
26
  }