创建项目 (new)
new 命令用于创建新的 Flutter 项目,支持交互式和命令行两种模式。
基本用法
bash
flu-cli new [project-name] [options]
# 简写
flu-cli n [project-name] [options]交互式模式(推荐)
不提供项目名称时,进入交互式模式:
bash
flu-cli new
# 或
flu-cli n交互流程
1. 输入项目名称
? 请输入项目名称(直接回车使用: my_app)
my_app- 默认值:
my_app - 规则: 只能包含小写字母、数字和下划线
- 示例:
my_flutter_app,todo_app,shop_2024
2. 选择模板
? 请选择项目模板
❯ Lite - 精简版
Modular - 模块化版
Clean - 分层版
──────────────
新增自定义模板(本地或 Git)使用方向键选择,实时查看模板详情:
- Lite: 最小依赖,适合快速原型
- Modular: 模块化结构,适合中型项目
- Clean: 严格分层,适合大型项目
- 自定义模板: 添加本地或 Git 模板
3. 输入项目路径
? 请输入项目路径(直接回车使用: /current/path/my_app)
/current/path/my_app- 默认值: 当前目录 + 项目名
- 可以输入绝对路径或相对路径
4. 输入包名
? 请输入包名(直接回车使用: com.example.my_app)
com.example.my_app- 默认值:
com.example.项目名 - 格式: 反向域名,如
com.mycompany.myapp - 用于 Android 和 iOS 平台配置
5. 输入作者名称
? 请输入作者名称(直接回车使用: Your Name)
Your Name- 默认值: 上次输入的名称或
Your Name - 输入后会保存,下次自动填充
6. 确认创建
📋 项目信息确认:
项目名称: my_app
项目模板: Lite - 精简版
项目路径: /current/path/my_app
包名: com.example.my_app
作者: Your Name
? 确认创建项目? (Y/n)确认后开始创建项目。
目录已存在处理
如果项目路径已存在,会提示:
⚠️ 目录已存在: /current/path/my_app
? 是否删除现有目录并重新创建? (Y/n)- 选择
Y: 删除现有目录并重新创建 - 选择
n: 取消操作
命令行模式
提供项目名称时,进入命令行模式:
bash
flu-cli new my_app [options]仍需交互输入包名和作者,但可以通过参数指定模板和目录。
参数
| 参数 | 简写 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
--template | -t | string | lite | 模板类型 |
--dir | -d | string | 当前目录 | 项目存放目录 |
--no-cache | - | boolean | false | 不使用缓存 |
示例
创建 Lite 项目
bash
flu-cli new my_app
# 或明确指定模板
flu-cli new my_app -t lite创建 Modular 项目
bash
flu-cli new my_app -t modular创建 Clean 项目
bash
flu-cli new my_app -t clean指定目录
bash
flu-cli new my_app -d ~/projects
# 项目将创建在 ~/projects/my_app不使用缓存
bash
flu-cli new my_app --no-cache强制从 Git 拉取最新模板,不使用本地缓存。
创建过程
创建项目时会执行以下步骤:
1. 准备模板
⠋ 正在准备模板...- 检查本地缓存
- 如果缓存不存在或使用
--no-cache,从 Git 克隆 - 对于自定义模板,从指定位置获取
2. 创建 Flutter 项目
⠋ 正在创建 Flutter 项目...执行 flutter create 命令:
- 设置项目名称
- 设置包名
- 生成平台配置(Android、iOS 等)
3. 复制模板文件
⠋ 正在复制模板文件...从模板复制文件到项目:
- 复制
lib/目录 - 复制
assets/目录(如果存在) - 复制
.vscode/目录(如果存在) - 保留平台目录(android、ios 等)
4. 配置项目
⠋ 正在配置项目...- 替换模板变量(项目名、包名、作者)
- 合并
pubspec.yaml依赖 - 更新配置文件
5. 完成
✨ 项目创建成功!
下一步:
cd my_app
flutter pub get
flutter run自定义模板
添加本地模板
在交互式模式中选择"新增自定义模板(本地)":
? 请选择模板类型
❯ 本地目录
Git 仓库
? 请输入本地模板目录的绝对路径
/Users/yourname/my-flutter-template
? 请输入模板显示名称
My Custom Template添加 Git 模板
在交互式模式中选择"新增自定义模板(Git)":
? 请选择模板类型
本地目录
❯ Git 仓库
? 请输入 Git 仓库地址
https://github.com/yourorg/flutter-template.git
? 请输入分支名称(默认: main)
main
? 请输入模板显示名称
My Git Template模板要求
自定义模板需要满足:
包含 Flutter 项目结构
- 必须有
lib/目录 - 必须有
pubspec.yaml
- 必须有
支持变量替换
- 项目名称- 包名- 作者名称
推荐包含
.vscode/dart.code-snippets- VSCode 片段README.md- 项目说明assets/- 资源文件
模板合并机制
使用自定义模板时:
pubspec.yaml 合并
yaml
# 模板的 pubspec.yaml
dependencies:
flutter:
sdk: flutter
provider: ^6.0.0
http: ^1.1.0
# 生成的 pubspec.yaml
name: my_app # 使用你的项目名
description: A new Flutter project.
dependencies:
flutter:
sdk: flutter
provider: ^6.0.0 # 保留模板依赖
http: ^1.1.0 # 保留模板依赖平台配置保留
my_app/
├── android/ # 保留 flutter create 生成的配置
├── ios/ # 保留 flutter create 生成的配置
├── lib/ # 使用模板的代码
├── assets/ # 使用模板的资源
└── .vscode/ # 使用模板的配置这确保了包名和平台配置正确。
常见问题
项目名称规则
项目名称必须:
- 以小写字母开头
- 只包含小写字母、数字和下划线
- 不能使用 Dart 关键字
bash
# ✅ 正确
flu-cli new my_app
flu-cli new todo_list
flu-cli new shop_2024
# ❌ 错误
flu-cli new MyApp # 不能有大写字母
flu-cli new my-app # 不能有连字符
flu-cli new 123app # 不能以数字开头如何更新模板缓存(默认强制刷新)
bash
# 更新所有模板(清理未跟踪文件)
flu-cli update-templates [--force]
# 更新指定模板(清理未跟踪文件)
flu-cli update-templates lite [--force]提示:创建项目前若需确保使用最新模板,可执行 flu-cli update-templates --force 或在创建时使用 --no-cache(可配合 --remote)。
如何清理缓存
bash
flu-cli cache clean创建失败怎么办
检查 Flutter 是否正确安装
bashflutter doctor检查网络连接(首次下载模板需要网络)
使用
--no-cache强制重新下载bashflu-cli new my_app --no-cache查看故障排除