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.
- package/CHANGELOG.md +23 -0
- package/README.md +17 -4
- package/config/dev.config.js +11 -11
- package/config/templates.js +10 -10
- package/index.js +554 -102
- package/lib/commands/add.js +365 -266
- package/lib/commands/assets.js +77 -78
- package/lib/commands/cache.js +29 -52
- package/lib/commands/completion.js +13 -11
- package/lib/commands/config.js +150 -44
- package/lib/commands/init-ai-base.js +89 -0
- package/lib/commands/newClack.js +269 -178
- package/lib/commands/snippets.js +58 -43
- package/lib/commands/template.js +98 -58
- package/lib/commands/templates.js +101 -57
- package/lib/commands/upload.js +313 -0
- package/lib/commands/vnext-options.js +206 -0
- package/lib/generators/model_generator.js +91 -88
- package/lib/generators/page_generator.js +100 -93
- package/lib/generators/service_generator.js +44 -39
- package/lib/generators/viewmodel_generator.js +25 -29
- package/lib/generators/widget_generator.js +30 -35
- package/lib/templates/templateCopier.js +14 -15
- package/lib/templates/templateManager.js +22 -21
- package/lib/utils/config.js +37 -20
- package/lib/utils/flutterHelper.js +2 -2
- package/lib/utils/i18n.js +3 -3
- package/lib/utils/index_updater.js +22 -23
- package/lib/utils/json-output.js +59 -0
- package/lib/utils/logger.js +17 -17
- package/lib/utils/project_detector.js +66 -66
- package/lib/utils/snippet_loader.js +21 -19
- package/lib/utils/string_helper.js +13 -13
- package/lib/utils/templateSelectorEnquirer.js +94 -108
- package/locales/en-US.json +1 -1
- package/locales/zh-CN.json +2 -2
- package/package.json +60 -57
- package/scripts/smoke-vnext-generate.mjs +1934 -0
- package/scripts/smoke-vnext-params.mjs +92 -0
- package/CLI.md +0 -513
- package/release.sh +0 -529
- package/scripts/e2e-state-tests.js +0 -116
- package/scripts/sync-base-to-templates.js +0 -108
- package/scripts/workspace-clone-all.sh +0 -101
- 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/
|
|
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
|
|
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
|
-
-
|
|
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/
|
|
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"
|
package/config/dev.config.js
CHANGED
|
@@ -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
|
}
|
package/config/templates.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
}
|