以下是关于 Melos 的详细介绍与使用教程,结合 pub.dev 官方文档及网络信息整理而成:
一、Melos 是什么?
Melos 是一款专为 Dart/Flutter 多包项目(Monorepo) 设计的命令行工具,旨在简化多包工作区的管理、版本控制、依赖协调及脚本自动化。它通过统一的配置和命令,帮助开发者高效管理包含多个子包的复杂项目,尤其适用于需要跨包协作的 Flutter 插件开发或模块化应用场景。
核心功能
- 多包协调管理:支持批量执行命令(如构建、测试、发布)。
- 自动化版本控制:基于 Conventional Commits 规范自动生成版本号和变更日志。
- 本地包链接:无需手动修改依赖路径,直接在本地工作区中链接子包。
- 脚本化工作流:通过自定义脚本简化重复操作。
- IDE 集成:与 IntelliJ、VSCode 等主流开发工具无缝兼容。
二、安装与初始化
1. 安装 Melos
通过 Dart 全局安装:
1 | dart pub global activate melos |
2. 初始化项目
在项目根目录执行以下命令生成基础配置:
1 | melos init |
该命令会创建 melos.yaml
文件,并生成默认的目录结构:
1 | my_project/ |
三、配置文件 melos.yaml
melos.yaml
是 Melos 的核心配置文件,定义工作区的子包路径、脚本、版本策略等。示例配置如下:
1 | name: my_workspace |
关键配置项
packages
:定义子包路径(支持通配符)。scripts
:自定义命令(如测试、构建)。version
:版本控制策略(自动生成 CHANGELOG)。
四、常用命令与工作流
1. 初始化依赖
在根目录运行以下命令,自动安装所有子包的依赖并链接本地包:
1 | melos bootstrap |
2. 执行脚本
通过 melos run
运行自定义脚本(需在 melos.yaml
中定义):
1 | melos run analyze # 执行代码分析 |
3. 版本管理与发布
Melos 支持自动化版本升级与发布:
1 | # 基于提交历史生成新版本号及变更日志 |
通过 conventionalCommits: true
配置,Melos 会根据提交类型(如 feat
、fix
)自动决定版本号(SemVer)。
五、高级功能
1. 本地包依赖管理
在子包的 pubspec.yaml
中直接引用本地包名称,Melos 会自动解析为本地路径:
1 | dependencies: |
2. IDE 集成
- VSCode:安装
melos
插件,支持脚本可视化执行和包导航。 - IntelliJ:通过插件实现类似功能,提升开发效率。
3. 跨包测试与构建
通过并发执行加速工作流:
1 | melos run build --concurrency=4 # 并发构建 4 个子包 |
六、适用场景
- Flutter 插件开发:管理多个平台(Android/iOS/Web)的实现包。
- 模块化应用:将应用拆分为独立的功能模块(如 UI、数据层)。
- 企业级 Monorepo:统一管理多个团队共享的代码库。
七、最佳实践
- 目录结构规范:将子包统一放在
packages/
目录下。 - 脚本标准化:定义通用的
test
、format
脚本确保代码一致性。 - 版本控制策略:采用 Conventional Commits 规范,便于自动化生成版本日志。
通过 Melos,开发者可以显著减少多包项目的维护成本,提升团队协作效率。更多高级用法(如 CI/CD 集成)可参考 官方文档 或社区教程。