0%

Melos 的详细介绍与使用教程

以下是关于 Melos 的详细介绍与使用教程,结合 pub.dev 官方文档及网络信息整理而成:


一、Melos 是什么?

Melos 是一款专为 Dart/Flutter 多包项目(Monorepo) 设计的命令行工具,旨在简化多包工作区的管理、版本控制、依赖协调及脚本自动化。它通过统一的配置和命令,帮助开发者高效管理包含多个子包的复杂项目,尤其适用于需要跨包协作的 Flutter 插件开发或模块化应用场景。

核心功能

  1. 多包协调管理:支持批量执行命令(如构建、测试、发布)。
  2. 自动化版本控制:基于 Conventional Commits 规范自动生成版本号和变更日志。
  3. 本地包链接:无需手动修改依赖路径,直接在本地工作区中链接子包。
  4. 脚本化工作流:通过自定义脚本简化重复操作。
  5. IDE 集成:与 IntelliJ、VSCode 等主流开发工具无缝兼容。

二、安装与初始化

1. 安装 Melos

通过 Dart 全局安装:

1
dart pub global activate melos

2. 初始化项目

在项目根目录执行以下命令生成基础配置:

1
melos init

该命令会创建 melos.yaml 文件,并生成默认的目录结构:

1
2
3
4
5
6
my_project/
├── melos.yaml # 核心配置文件
├── packages/ # 子包目录
│ ├── package_a/
│ └── package_b/
└── ... # 其他项目文件

三、配置文件 melos.yaml

melos.yaml 是 Melos 的核心配置文件,定义工作区的子包路径、脚本、版本策略等。示例配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
name: my_workspace
packages:
- "packages/**" # 使用通配符匹配子包路径
scripts:
analyze: # 自定义脚本
exec: flutter analyze
description: "分析所有子包的代码"
build:
exec: flutter build
concurrency: 2 # 并发执行数

version:
message: "chore: release %s" # 版本发布时的提交信息模板
conventionalCommits: true # 启用 Conventional Commits 规范

关键配置项

  • packages:定义子包路径(支持通配符)。
  • scripts:自定义命令(如测试、构建)。
  • version:版本控制策略(自动生成 CHANGELOG)。

四、常用命令与工作流

1. 初始化依赖

在根目录运行以下命令,自动安装所有子包的依赖并链接本地包:

1
melos bootstrap

2. 执行脚本

通过 melos run 运行自定义脚本(需在 melos.yaml 中定义):

1
2
melos run analyze   # 执行代码分析
melos run test -- -n "特定测试用例" # 传递参数给子命令

3. 版本管理与发布

Melos 支持自动化版本升级与发布:

1
2
3
4
5
# 基于提交历史生成新版本号及变更日志
melos version

# 发布所有子包到 pub.dev
melos publish

通过 conventionalCommits: true 配置,Melos 会根据提交类型(如 featfix)自动决定版本号(SemVer)。


五、高级功能

1. 本地包依赖管理

在子包的 pubspec.yaml 中直接引用本地包名称,Melos 会自动解析为本地路径:

1
2
dependencies:
package_a: ^1.0.0 # 实际指向本地 packages/package_a

2. IDE 集成

  • VSCode:安装 melos 插件,支持脚本可视化执行和包导航。
  • IntelliJ:通过插件实现类似功能,提升开发效率。

3. 跨包测试与构建

通过并发执行加速工作流:

1
melos run build --concurrency=4   # 并发构建 4 个子包

六、适用场景

  1. Flutter 插件开发:管理多个平台(Android/iOS/Web)的实现包。
  2. 模块化应用:将应用拆分为独立的功能模块(如 UI、数据层)。
  3. 企业级 Monorepo:统一管理多个团队共享的代码库。

七、最佳实践

  1. 目录结构规范:将子包统一放在 packages/ 目录下。
  2. 脚本标准化:定义通用的 testformat 脚本确保代码一致性。
  3. 版本控制策略:采用 Conventional Commits 规范,便于自动化生成版本日志。

通过 Melos,开发者可以显著减少多包项目的维护成本,提升团队协作效率。更多高级用法(如 CI/CD 集成)可参考 官方文档 或社区教程。