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

相关推荐
恋猫de小郭17 小时前
Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
android·前端·flutter
m0_738185821 天前
Flutter 鸿蒙化实战:flutter_scankit 适配 OpenHarmony,华为 ScanKit 扫码
flutter·华为·harmonyos·鸿蒙
事圆则缓2 天前
Flutter 开发鸿蒙实战:从 OpenHarmony 适配版到 HAP 构建与插件接入
flutter·华为·harmonyos
天空之城--2 天前
Android一周动态:Android 18首次官宣、Compose Material3 1.4转正(5趋势+5资讯)
android·人工智能·flutter·架构·android jetpack
恋猫de小郭2 天前
Meta 分享怎么用 AI 迁移 Compose 项目不烧心
android·前端·flutter
EatFan2 天前
Flutter 鸿蒙适配实践 2026:从环境搭建、混合渲染到 OpenTelemetry 性能基建
flutter·华为·harmonyos·openharmony·opentelemetry·鸿蒙适配·impeller
m0_738185822 天前
Flutter 鸿蒙化实战:flutter_secure_storage 适配 OpenHarmony,敏感数据安全存储
安全·flutter·华为·harmonyos·鸿蒙
传奇开心果编程2 天前
【现代声明式UI学与练】第1课 从命令式UI到声明式UI
学习·flutter·ui·swiftui·react·android jetpack
m0_738185823 天前
Flutter 鸿蒙化实战:flutter_nfc_kit 适配 OpenHarmony,NFC 读写一步到位
flutter·华为·harmonyos·鸿蒙
恋猫de小郭3 天前
KMP 又改了编译流程, Separate Compilation 禁止了 `commonMain` 的依赖穿透
android·前端·flutter