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 +28 -6
- package/CLI.md +1 -0
- package/README.md +139 -67
- package/config/templates.js +6 -127
- package/index.js +100 -50
- package/lib/commands/add.js +8 -8
- package/lib/commands/assets.js +183 -0
- package/lib/commands/config.js +41 -1
- package/lib/commands/newClack.js +89 -116
- package/lib/commands/snippets.js +50 -9
- package/lib/commands/template.js +1 -1
- package/lib/templates/templateCopier.js +14 -275
- package/lib/templates/templateManager.js +20 -163
- package/lib/utils/config.js +13 -51
- package/lib/utils/flutterHelper.js +7 -82
- package/lib/utils/i18n.js +7 -0
- package/lib/utils/templateSelectorEnquirer.js +70 -43
- package/locales/en-US.json +59 -0
- package/locales/zh-CN.json +59 -0
- package/package.json +2 -2
- package/release.sh +380 -32
- package/scripts/sync-base-to-templates.js +6 -6
- package/scripts/workspace-clone-all.sh +4 -4
- package/scripts/workspace-status-all.sh +3 -3
- package/lib/generators/project_generator.js +0 -96
- package/lib/generators/state_manager_generator.js +0 -402
- package/templates/README.md +0 -138
- package/templates/base_files/base_list_page.dart.template +0 -174
- package/templates/base_files/base_list_viewmodel.dart.template +0 -134
- package/templates/base_files/base_page.dart.template +0 -251
- package/templates/base_files/base_viewmodel.dart.template +0 -77
- package/templates/base_files/theme/status_views_theme.dart.template +0 -46
- package/templates/snippets/dart.code-snippets +0 -392
package/CHANGELOG.md
CHANGED
|
@@ -2,13 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
本项目的所有主要更改都将记录在此文件中。
|
|
4
4
|
|
|
5
|
-
## [2.0.
|
|
5
|
+
## [2.0.4] - 2026-01-13
|
|
6
6
|
|
|
7
|
-
###
|
|
8
|
-
|
|
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
|
|
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">
|
|
5
|
+
</p>
|
|
4
6
|
|
|
5
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
36
|
-
|
|
74
|
+
```bash
|
|
75
|
+
# 生成页面(包含 View + ViewModel)
|
|
37
76
|
flu add page home
|
|
38
|
-
# 或使用别名
|
|
39
|
-
flu a p home
|
|
40
77
|
|
|
41
|
-
#
|
|
42
|
-
flu
|
|
78
|
+
# 生成列表页面(自动包含分页逻辑)
|
|
79
|
+
flu add page user_list --list-page
|
|
43
80
|
|
|
44
|
-
#
|
|
45
|
-
flu
|
|
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
|
-
|
|
89
|
+
```bash
|
|
90
|
+
cd my_existing_project
|
|
91
|
+
flu config init
|
|
52
92
|
```
|
|
53
93
|
|
|
54
|
-
|
|
94
|
+
自动检测项目结构,生成 `.flu-cli.json` 配置文件。
|
|
55
95
|
|
|
56
|
-
###
|
|
96
|
+
### 4️⃣ 自定义模板
|
|
57
97
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
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
|
-
|
|
69
|
-
-
|
|
70
|
-
|
|
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
|
|
150
|
+
flu new my_app
|
|
151
|
+
# 选择 Lite 模板 → Provider → 包含网络层
|
|
152
|
+
# 一分钟后,完整的 MVVM 项目就绪!
|
|
82
153
|
```
|
|
83
154
|
|
|
84
|
-
|
|
155
|
+
### 同步最新代码片段
|
|
85
156
|
|
|
86
157
|
```bash
|
|
87
|
-
flu
|
|
88
|
-
flu new --help
|
|
158
|
+
flu sync-snippets
|
|
89
159
|
```
|
|
90
160
|
|
|
91
|
-
|
|
161
|
+
自动升级项目中的 VSCode 代码片段到最新版本(8+ 种智能模板)。
|
|
92
162
|
|
|
93
|
-
|
|
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
|
-
|
|
173
|
+
获取最新动态、反馈问题或与开发者交流:
|
|
101
174
|
|
|
102
|
-
|
|
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
|
-
|
|
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 ©
|
|
185
|
+
MIT License - Copyright © 2026 火叶工作室
|
package/config/templates.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
24
|
+
if (!name) return false;
|
|
25
|
+
return name.toLowerCase() in TEMPLATES;
|
|
147
26
|
}
|