🧩 Flutter / Dart 多包管理工具 ------ Melos 使用指南
一、🧠 什么是 Melos
Melos 是 Dart / Flutter 官方推荐的 多 package(monorepo) 管理工具。 常用于管理包含多个 Flutter 模块、子包、插件的整体项目结构。
📘 官方仓库:github.com/invertase/m... 适用于大型 Flutter 工程、组件库、插件集合。
二、🌟 主要功能
功能 | 说明 |
---|---|
🧭 自动识别多包结构 | 自动扫描多个子 package(模块、plugin、app) |
⚙️ 一键执行操作 | 统一执行测试、格式化、构建、发布等命令 |
🔗 依赖联动和本地链接 | 自动建立子包之间的相互依赖关系 |
🧾 版本号与变更日志管理 | 自动维护版本与生成 CHANGELOG.md |
📚 支持工作区管理 (Monorepo) | 管理多个 App + Package 并行开发 |
三、📁 基础项目结构示例
bash
your_repo_root/
├── melos.yaml
├── packages/
│ ├── audio_module/
│ ├── video_module/
│ └── shared_ui/
└── apps/
├── mobile_app/
└── web_app/
四、🧾 melos.yaml 示例配置
yaml
name: my_workspace
packages:
- packages/**
- apps/**
🗂️ 字段说明:
字段 | 含义 |
---|---|
name |
工作区名称 |
packages |
指定 Melos 管理的包路径,可用通配符(** )递归匹配 |
五、⚙️ 常用命令说明
命令 | 功能说明 |
---|---|
melos bootstrap |
自动链接依赖包(相当于为所有本地包执行 flutter pub get 并做好依赖联结) |
melos run test |
在所有子包中执行单元测试 |
melos version |
自动管理所有子包的版本号、生成 CHANGELOG.md |
melos run format |
统一格式化所有 package |
melos publish |
批量发布多包 |
melos exec <cmd> |
在所有 package 中执行自定义命令(例如编译、分析) |
六、🚀 实际操作示例
1️⃣ 初始化多包环境
bash
cd your_repo_root
melos bootstrap
自动安装依赖并链接内部包依赖关系。
2️⃣ 创建一个包模块
bash
cd your_repo_root
mkdir -p packages/audio_module
cd packages/audio_module
flutter create --template=package .
--template=package
表示生成一个 Flutter 包模板(非完整应用)。
3️⃣ 重新建立依赖关系
bash
flutter pub run melos bootstrap
确保新建模块与其他模块正确联动。
4️⃣ 执行测试
bash
melos run test
自动运行工作区下所有包的测试。
5️⃣ 管理版本号
bash
melos version
自动递增版本并生成统一的变更日志。
七、💡 Tips & 最佳实践
场景 | 建议做法 |
---|---|
多人协作大项目 | 使用 monorepo + melos 管理模块、统一依赖版本 |
插件库开发 | 每个插件独立 package,便于独立发布 |
CI/CD 集成 | 可在 CI 脚本中使用 melos bootstrap 、melos version 、melos publish 自动化流程 |
局部执行 | 通过 --scope 参数指定执行目标包,如: melos run test --scope="audio_module" |
八、📎 常用命令速查表
命令 | 说明 |
---|---|
melos list |
列出所有识别到的包 |
melos bootstrap |
链接依赖(顶级命令) |
melos run <command> |
执行定义的 melos 命令 |
melos exec <cmd> |
在每个包目录执行指定命令 |
melos clean |
清理 Melos 缓存 |
melos version |
自动递增版本号并生成CHANGELOG |
melos publish |
批量发布包(可结合 CI 自动化) |
九、📑 小结
项目 | 内容 |
---|---|
工具名称 | Melos |
核心作用 | Flutter/Dart 多包(Monorepo)统一管理 |
配置文件 | melos.yaml |
关键命令 | bootstrap 、run 、version |
推荐结构 | packages/** 、apps/** |
典型用途 | 组件库管理、插件集成、跨模块同步 |