Melos 发布pub.dev

确保登录

置登录状态

按照提示操作,先运行:

bash

bash 复制代码
dart pub logout

这会清除当前的(损坏的)登录信息。

然后再重新登录:

bash

bash 复制代码
dart pub login

这一次它应该会在浏览器中打开 Google 登录页面,完成登录后,回到终端应该显示类似:

Successfully authorized.

然后你就可以继续发布了:

手动发布

1. 进入一个子包,比如:
复制代码
bash
bash 复制代码
cd packages/xxf_demo
2. 手动发布:

bash

bash 复制代码
dart pub publish

这个命令执行后,如果你登录成功,会看到一个提示:

bash 复制代码
Do you want to publish xxf_demo 0.0.2 (y/N)?

你输入 y 才会真正上传。

🧰 Melos 全套实用教程(Flutter Monorepo 管理神器)

🚀 目录:

  1. 什么是 Melos?适合哪些项目?

  2. 安装与初始化

  3. 项目结构推荐

  4. melos.yaml 配置详解

  5. 常用命令讲解(bootstrap、run、exec、publish、version)

  6. 发布多个 package 到 pub.dev(自动识别改动 + 顺序)

  7. 高级技巧(版本管理 / script / ignore / Git hooks)

  8. 常见问题解答


1️⃣ 什么是 Melos?

Melos 是 Dart/Flutter 官方推荐的 Monorepo 管理工具,适合你有如下需求:

✅ 管理多个 Flutter/Dart 包(如 utils、plugin、theme)

✅ 模块间有依赖关系

✅ 想一次安装依赖、一次测试、一次发布多个模块

✅ 想提高团队协作效率(每人写自己模块)


2️⃣ 安装与初始化

✅ 安装:

复制代码
bash 复制代码
dart pub global activate melos

确保你把 global package 加进了 PATH:

bash 复制代码
export PATH="$PATH":"$HOME/.pub-cache/bin"

✅ 初始化项目

在项目根目录添加:

bash 复制代码
melos init

它会创建:

melos.yaml


3️⃣ 推荐项目结构

复制代码

复制编辑

my_repo/

├── melos.yaml
├── packages/

│ ├── my_utils/

│ ├── my_theme/

├── plugins/

│ ├── my_plugin/

├── examples/

每个模块都是合法的 Flutter/Dart package。


4️⃣ melos.yaml 配置详解

复制代码
yaml
XML 复制代码
name: demo
packages:
  - apps/*
  - packages/*
#ignore:
#  - "**/build/**"
#  - "**/example/**"     # 不希望被识别为 package 的路径

scripts:
  format:
    run: "dart format ."
  analyze:
    run: "flutter analyze"
  • name:工程名

  • packages:需要管理的模块路径(支持 glob)

  • ignore:排除的路径

  • scripts:你定义的统一脚本命令(配合 melos run 使用)


5️⃣ 常用命令详解

✅ 安装依赖(并自动链接本地依赖)

复制代码
bash
bash 复制代码
melos bootstrap

类似于 yarn install,自动安装所有模块依赖,并把本地依赖 link 起来。


✅ 执行统一命令(如测试、分析、构建)

bash

bash 复制代码
melos run analyze

会在每个 package 执行对应命令(来自 melos.yaml 的 scripts

也可指定某个模块:

bash

bash 复制代码
melos run analyze --scope=my_utils

✅ 在每个模块执行任意命令

bash

bash 复制代码
melos exec -- flutter pub get

也可以:

bash

bash 复制代码
melos exec --scope="my_utils" -- dart pub publish --dry-run

6️⃣ 发布到 pub.dev(批量)

1. 检查哪些模块有更新:

bash

bash 复制代码
melos publish --dry-run

会列出所有版本有变动的包,以及顺序。

2. 发布所有模块:

复制代码
bash
bash 复制代码
melos publish --yes

会跳过未修改的包,自动按依赖顺序发布。


7️⃣ 高级技巧

✅ 自动 bump 版本号并生成 changelog

bash

bash 复制代码
melos version

支持参数:

bash

bash 复制代码
melos version --no-git-tag-version melos version --yes

✅ 统一定义脚本

复制代码
yaml
bash 复制代码
scripts: test: run: "flutter test" format: run: "dart format ." pub_publish: run: "dart pub publish --dry-run"

调用:

复制代码
bash
bash 复制代码
melos run pub_publish

8️⃣ 常见问题解答

问题 解答
模块之间依赖怎么办? Melos 自动 link 本地依赖(bootstrap)
可以按模块单独发布吗? 可以:cd package && dart pub publish 或使用 --scope
支持私有包吗? 支持配置私有 registry(pub.dev 镜像、内网)
一定要 pubspec.yaml 吗? 是的,每个 module 必须是合法 Dart package
可以自动生成 changelog 吗? 可以结合 conventional commits + melos version 实现

相关推荐
书弋江山2 小时前
flutter 跨平台编码库 protobuf 工具使用
android·flutter
程序员老刘·2 小时前
Flutter 3.35 更新要点解析
flutter·ai编程·跨平台开发·客户端开发
tangweiguo030519872 小时前
Flutter vs Android:页面生命周期对比详解
flutter
tangweiguo030519872 小时前
Flutter网络请求实战:Retrofit+Dio完美解决方案
flutter
来来走走5 小时前
Flutter开发 webview_flutter的基本使用
android·flutter
落魄的Android开发6 小时前
Flutter以模块化适配 HarmonyOS方案的实现步骤
flutter
tangweiguo030519877 小时前
Flutter GetX 全面指南:状态管理、路由与依赖注入的最佳实践
flutter
来来走走11 小时前
Flutter Form组件的基本使用
android·flutter
fouryears_234171 天前
Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
开发语言·flutter·客户端·dart
LinXunFeng1 天前
Flutter - 详情页 TabBar 与模块联动?秒了!
前端·flutter·开源