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

相关推荐
2601_949970696 小时前
HumanizeDuration 跨端三方库仓颉适配全流程
前端·javascript·flutter
传奇开心果编程8 小时前
【Flutter踩坑排雷】第3课:const 误用坑|const 错误使用引发 UI 异常与性能损耗
flutter·移动开发·跨平台·dart·编程语言理论·编程框架·声明式ui
程序员老刘10 小时前
你的Flutter项目要不要紧急升级3.47.8?
flutter·客户端
Talyra4212 小时前
不想开会员,我写了一个记账 App
flutter
2601_9495758616 小时前
JSON5 跨端三方库仓颉适配全流程
前端·javascript·flutter
法的空间16 小时前
AI 编程时代,为什么 Dart 分析会拖慢大型项目的开发
android·flutter·ios
恋猫de小郭18 小时前
Flutter 紧急发布 3.47.8 安全升级版本,建议都升级
android·前端·flutter
好的佩奇1 天前
Dart 之模式
android·flutter·dart
淡淡的香烟2 天前
Flutter实现多语言切换
android·flutter·1024程序员节
事圆则缓2 天前
从零搭建一套 Flutter 架构:先跑通数据流
flutter