Skip to content

创建项目 (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-tstringlite模板类型
--dir-dstring当前目录项目存放目录
--no-cache-booleanfalse不使用缓存

示例

创建 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

模板要求

自定义模板需要满足:

  1. 包含 Flutter 项目结构

    • 必须有 lib/ 目录
    • 必须有 pubspec.yaml
  2. 支持变量替换

    • - 项目名称
    • - 包名
    • - 作者名称
  3. 推荐包含

    • .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

创建失败怎么办

  1. 检查 Flutter 是否正确安装

    bash
    flutter doctor
  2. 检查网络连接(首次下载模板需要网络)

  3. 使用 --no-cache 强制重新下载

    bash
    flu-cli new my_app --no-cache
  4. 查看故障排除

下一步

Released under the MIT License.