Melos 发布pub.dev

确保登录

置登录状态

按照提示操作,先运行:

bash

dart pub logout

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

然后再重新登录:

bash

dart pub login

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

Successfully authorized.

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

手动发布

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

bash

dart pub publish

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

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️⃣ 安装与初始化

✅ 安装:

 

dart pub global activate melos

确保你把 global package 加进了 PATH:

export PATH="$PATH":"$HOME/.pub-cache/bin"

✅ 初始化项目

在项目根目录添加:

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
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
melos bootstrap

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


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

bash

melos run analyze

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

也可指定某个模块:

bash

melos run analyze --scope=my_utils

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

bash

melos exec -- flutter pub get

也可以:

bash

melos exec --scope="my_utils" -- dart pub publish --dry-run

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

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

bash

melos publish --dry-run

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

2. 发布所有模块:

bash
melos publish --yes

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


7️⃣ 高级技巧

✅ 自动 bump 版本号并生成 changelog

bash

melos version

支持参数:

bash

melos version --no-git-tag-version melos version --yes

✅ 统一定义脚本

yaml
scripts: test: run: "flutter test" format: run: "dart format ." pub_publish: run: "dart pub publish --dry-run"

调用:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.黑马学习笔记-SpringMVC(P43-P47)

1.SpringMVC简介 SpringMVC技术(更少的代码,简便)与servlet技术功能相同,属于web层开发技术。 SpringMVC是一种基于java实现MVC模型的轻量级web框架。 轻量级指的是(内存占用比较低,运行效率高)…

【特殊场景应对1】视觉设计:信息密度与美学的博弈——让简历在HR视网膜上蹦迪的科学指南

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…

CentOS 7 linux系统从无到有部署项目

环境部署操作手册 一、Maven安装与配置 1. 下载与解压 下载地址:https://maven.apache.org/download.cgi?spm5238cd80.38b417da.0.0.d54c32cbnOpQh2&filedownload.cgi上传并解压解压命令: tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /usr/loc…

Odoo:免费开源的轧制品行业管理软件

Odoo免费开源的轧制品行业管理软件能够帮助建材、电线电缆、金属、造纸包装以及纺织品行业提高韧性和盈利能力,构筑美好未来。 文 | 开源智造(OSCG)Odoo金牌服务 提高供应链韧性,赋能可持续发展 如今,金属…

51单片机实验二:数码管静态显示

目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.单个数码管显示 2.六个数码管依次从0~F变换显示 3.proteus仿真 一、实验环境与实验器材 环境:Keli,STC-ISP烧写软件,Proteus. 器材:TX-1C单片机(STC89C52RC…

学术AI工具推荐

一、基础信息对比 维度知网研学AI(研学智得AI)秘塔AIWOS AI开发公司同方知网(CNKI)上海秘塔网络科技Clarivate Analytics是否接入DeepSeek✅ 深度集成(全功能接入DeepSeek-R1推理服务)✅ 通过API接入DeepS…

冰川流域提取分析——ArcGIS pro

一、河网提取和流域提取视频详细GIS小熊 || 6分钟学会水文分析—河网提取(以宜宾市为例)_哔哩哔哩_bilibili 首先你要生成研究区域DEM,然后依次是填洼→流向→流量→栅格计算器→河网分级→栅格河网矢量化(得到河网.shp&#xff…

【物联网-RS-485】

物联网-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点 ■ RS-485 连接方式 ■ RS-485 半双工通讯 一线定义为A 一线定义为B RS-485传输方式:半双工通信、(逻辑1:2V ~ 6V 逻辑0:-6V ~ -2V)这里的电平…

解析检验平板:设备还是非设备?深入了解其功能与应用(北重铸铁平台厂家)

检验平板通常被归类为设备,因为它们具有特定的功能,并且被用于测试和评估其他设备或产品的性能和质量。检验平板通常具有平坦的表面,用于放置要进行测试或检验的物品。它们可以用于测量尺寸、形状、平整度、表面光洁度等参数。 检验平板的应…

6.数据手册解读—运算放大器(二)

目录 6、细节描述 6.1预览 6.2功能框图 6.3 特征描述 6.3.1输入保护 6.3.1 EMI抑制 6.3.3 温度保护 6.3.4 容性负载和稳定性 6.3.5 共模电压范围 6.3.6反相保护 6.3.7 电气过载 6.3.8 过载恢复 6.3.9 典型规格与分布 6.3.9 散热焊盘的封装 6.3.11 Shutdown 6.4…

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(六级)真题

青少年软件编程(Python)等级考试试卷(六级) 分数:100 题数:38 答案解析:https://blog.csdn.net/qq_33897084/article/details/147341458 一、单选题(共25题,共50分) 1. 在tkinter的…

centos与ubuntu系统版本介绍

CentOS与Ubuntu系统镜像版本介绍 前言CentOS官网镜像历史版本阿里云镜像总结 Ubuntu官网系统总结 最后 前言 在我准备给虚拟机(我使用的是vritualbox)安装一个Linux系统,不知道该选择centos还是Ubuntu。并且在下载镜像的过程中对系统的版本、…

Go 语言中的 package main、 func main() 和main.go的使用规范

本文旨在解释 Go 语言中 package main 、 func main() 和main.go的关系及其使用规则,解决如下典型问题: 是否可以在一个项目中定义多个 func main()?是否可以在非 package main 中写 func main()?多个文件中都写 func main() 会冲突吗?main.go是必须的命名方式吗?正确的结…

MySQL启动Failed to start LSB: start and stop MySQL

错误呈现 数据库初始化 删除 mysql/data中的文件 在对数据库重新进行初始化之前,需要事先删除 /usr/local/mysql/data目录下已经生成的文件。 查看 ll /usr/local/mysql/data/#删除 rm -rf /usr/local/mysql/data/* 删除 使用以下命令对数据库初始化 /usr/local/m…

服务器架构:SMP、NUMA、MPP及Docker优化指南

文章目录 引言 一、服务器架构基础1. SMP(对称多处理,Symmetric Multiprocessing)2. NUMA(非统一内存访问,Non-Uniform Memory Access)3. MPP(大规模并行处理,Massively Parallel Pr…

【HarmonyOS NEXT】多目标产物构建实践

目录 什么是多产物构建 如何定义多个构建产物 如何在项目中使用 参考文章 什么是多产物构建 在鸿蒙应用开发中,一个应用可定义多个 product,每一个 product 对应一个定制的 APP 包,每个 product 中支持对 bundleName、bundleType、输出产…

Django视图(未分离)

ListView、DetailView、CreateView、UpdateView 和 DeleteView 是 Django 框架中基于类的通用视图(Class-Based Generic Views) 配置 URL 路由 在 urls.py 中为这些视图配置路由: from django.urls import path from .views import (PostLis…

如何通过自动化解决方案提升企业运营效率?

引言 在现代企业中,运营效率直接影响着企业的成本、速度与竞争力。尤其是随着科技的不断发展,传统手工操作和低效的流程逐渐无法满足企业的需求。自动化解决方案正成为企业提升运营效率、降低成本和提高生产力的关键。无论是大型跨国公司,还…

3.8/Q1,GBD数据库最新文章解读

文章题目:Regional and National Burden of Traumatic Brain Injury and Spinal Cord Injury in North Africa and Middle East Regions, 1990-2021: A Systematic Analysis for The Global Burden of Disease Study 2021 DOI:10.1007/s44197-025-00372-…

C#中扩展方法和钩子机制使用

1.扩展方法: 扩展方法允许向现有类型 “添加” 方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像实例方法一样进行调用。 使用场景: 1.当无法修改某个类的源代码&#…