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 实现

相关推荐
肥肥呀呀呀7 小时前
flutter 的热更新方案shorebird
flutter
snail2012119 小时前
Flutter接入ProtoBuff和原生Android通信【性能最优】
android·flutter
程序猿阿伟10 小时前
《让歌声跨越山海:Flutter借助Agora SDK实现高质量连麦合唱》
flutter
郝郝先生--14 小时前
Flutter 异步原理-Zone
前端·flutter
怀君1 天前
Flutter——数据库Drift开发详细教程(四)
数据库·flutter
肥肥呀呀呀2 天前
flutter 资料收集
前端·flutter
程序猿阿伟2 天前
《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》
flutter·react native·架构
肥肥呀呀呀2 天前
flutter利用 injectable和injectable_generator 自动get_it注册
flutter
恋猫de小郭2 天前
Compose Multiplatform iOS 稳定版发布:可用于生产环境,并支持 hotload
android·flutter·macos·ios·kotlin·cocoa
yuanlaile2 天前
Flutter开发HarmonyOS实战-鸿蒙App商业项目
flutter·华为·harmonyos·flutter开发鸿蒙