Editor.js 分支管理与版本发布指南:从 `next` 分支到 NPM `latest` 标签的完整自动化管线
Editor.js 分支管理与版本发布指南从next分支到 NPMlatest标签的完整自动化管线【免费下载链接】editor.jsA block-style editor with clean JSON output项目地址: https://gitcode.com/gh_mirrors/ed/editor.js本篇指南系统讲解 Editor.js 开源仓库包名editorjs/editorjs的分支策略、语义化版本规则与 Release 发布流程。你将掌握master/next双分支的职责划分、major.minor.patch与-rc.*预发布后缀的取舍方法以及三份 GitHub Actions 工作流如何自动完成版本号提升 → 创建发布草稿 → 发布到 NPM的全链路最终能够独立走通一次从 bug 修复到正式发版的完整管线。分支策略master 与 next 双轨并行Editor.js 仓库维护两条主干分支职责划分非常清晰master分支承载编辑器的最新稳定版本。该分支上合入的版本会以默认标签latest发布到 NPM用户执行npm i editorjs/editorjs默认获取的就是它。next分支用于开发下一个候选发布Release Candidate版本。它可能包含 bug 修复、功能改进或新特性对应包会以next标签发布到 NPM。换句话说master面向生产消费者next面向尝鲜用户与内部迭代。从当前仓库快照看git branch显示远端 HEAD 指向origin/next最新标签为v2.31.7开发工作始终在next上进行稳定版则从其中挑选合适的节点发布——这正是下文整套自动化流水线的前提。说明master与next的约定是仓库发布策略的核心见 docs/releases.md而 package.json 中的包名、版本号当前为2.31.7与构建产物入口dist/editorjs.umd.js、dist/editorjs.mjs则共同构成了版本号 → NPM 包的事实映射。语义化版本major.minor.patch 的取舍Editor.js 以 [Semantic Versioning] 语义化版本规范作为版本命名的基本准则版本号格式为major.minor.patch根据变更对下游的影响程度选择提升哪一段版本段触发条件典型变更patchbug 修复、文档更新、代码风格修正等不影响最终构建产物的变更修复链接在 Safari 下的插入问题2.30.7、修复 onChange 对原生select的触发2.31.7minor新增功能且不存在向后兼容问题只读模式下支持带isReadOnlySupported的内联工具2.31.0major破坏性变更与上一版本 API 不再向后兼容公共 API 或配置结构发生不兼容调整预发布版本可以在基础版本号后追加-rc.*后缀rc即 Release Candidate例如2.19.1-rc.0。仓库的 docs/CHANGELOG.md 是这条规则的实践样本例如 2.31.7 仅包含一条Fix触发原生select的 onChange属于典型 patch 级发布而 2.31.0 混入了New/Improvement/Fix多种类型其中包含新特性因此提升 minor。逐条对照 changelog 的类型前缀Fix、New、Improvement、DX可以快速判断某次合并应当落在哪个版本段。发布工作流总览三份 Actions 分工协作版本发布不是手工过程而是由三份 GitHub Actions 工作流接力完成它们全部位于 .github/workflows 目录工作流文件触发时机职责bump-version-on-merge-next.ymlPR 合并到next分支pull_request_targettypes: [closed]检查 package.json 版本是否已更新若未更新则自动提议下一个预发布版本并开 PRcreate-a-release-draft.ymlPR 合并到next分支且版本号发生变化构建产物并自动创建 GitHub 发布草稿draft含 UMD/MJS 两个构建产物附件publish-package-to-npm.ymlGitHub 发布Release被正式published构建并发布包到 NPM按是否为预发布版本打next或latest标签三者构成一条完整链路合代码 → 自动 bump 版本 → 建发布草稿 → 人工审核 → 正式发布 → 自动上 NPM。发布草稿的自动创建当带有已更新版本号的 PR 合并到next后create-a-release-draft.yml会通过codex-team/action-nodejs-package-infov1读取合并前后的 package.json 版本并比对若版本未变化则调用 GitHub API 取消本次工作流运行检出代码含递归子模块、yarn安装依赖、执行yarn build构建产物使用actions/create-releasev1以draft: true创建发布草稿标签名取自v${{ steps.package.outputs.version }}上传dist/editorjs.umd.js与dist/editorjs.mjs两个构建产物作为 Release 附件通过codex-team/action-codexbot-notifyv1向内部频道推送草稿已创建的提醒消息。草稿的描述默认取 PR 标题与编号body: ${{ github.event.pull_request.title }} #${{ github.event.pull_request.number }}。发布者需要把草稿描述替换为目标版本对应的 changelog 内容——即从 docs/CHANGELOG.md 中摘出该版本条目再点击发布发布后自动上 NPMGitHub 上正式发布 Release 后publish-package-to-npm.yml随即被release事件的published类型触发检出代码含递归子模块配置 Node 18 与 npm registry执行yarn与yarn build对应package.json中的build脚本vite build --mode production执行yarn publish --accesspublic --tagnext先把包发布到 NPM 的next标签关键一步仅当github.event.release.prerelease ! true即非预发布时执行npm dist-tag add nameversion latest把该版本补打上默认的latest标签完成后由notify任务向公开频道推送发布成功消息。也就是说发布动作统一走next标签latest标签只授予正式版本。这保证了 NPM 上latest永远指向稳定版next永远指向最新的候选版。Release Candidate 预发布-rc.*后缀如果你想发布候选版本只需在 package.json 的版本号与 releases 页面的标签中都使用-rc.*后缀。工作流会检测到该标记并自动把发布标为pre-release具体机制见 create-a-release-draft.yml创建草稿时prerelease: ${{ contains(steps.package.outputs.version, -rc) }}——只要版本号里包含-rc字符串预发布复选框即被自动勾选。相应地publish-package-to-npm.yml中github.event.release.prerelease ! true的条件判断会阻止 RC 版本获得latest标签它只以next标签发布。三类版本的命名关系如下类型示例NPM 标签是否 pre-release稳定版Stable2.19.0latest否候选版Release candidate2.19.1-rc.0、2.19.1-rc.1、…next是下一个正式版Next version2.19.1latest否即2.19.1-rc.0 → 2.19.1-rc.1 → … → 2.19.1候选版迭代完成后再剥离-rc后缀发布正式版。自动版本号提升Auto-bump每次 PR 合并到next分支后bump-version-on-merge-next.yml 都会检查 package.json 中的版本是否已更新若 PR 已手动改过版本号工作流直接取消运行Stop workflow if version was changed already步骤若版本号未更新则自动打开一个新 PR提议下一个预发布版本。工作原理bump 动作的核心命令是yarn version --prerelease --preid rc --no-git-tag-version--prerelease将版本号提升为预发布版本--preid rc预发布标识符使用rc--no-git-tag-version只改 package.json不打 git tag。行为分两种情况2.19.1 - 2.19.2-rc.0 基础版本 bump 一个 patch并加上 rc.0 2.19.2-rc.0 - 2.19.2-rc.1 已有 rc 则递增 rc 序号随后工作流用peter-evans/create-pull-requestv3创建 PR分支名固定为auto-bump-version标题为Bump version up to 新版本号PR 描述中注明触发来源**PR 标题** #PR 编号合并后delete-branch: true自动删除分支。安全提示该工作流与create-a-release-draft.yml均使用pull_request_target触发器其官方注释特别警告——该触发器为 fork 来源的 PR 也授予仓库 secrets 与写权限因此严禁 checkout PR 自身的提交github.event.pull_request.head.sha以避免恶意代码执行这是阅读这两个工作流时应当知晓的约束。修改版本号自动提议的版本未必符合预期。例如下一轮计划是提升 minor 版本2.19.1 - 2.20.0那么应该在版本更新合并之前手动修改默认2.19.1 会被提升为 2.19.2-rc.0 修改将 2.19.2-rc.0 改为 2.20.0-rc.0同理如果你需要直接发布正式版本而非预发布版本也可以直接编辑版本号以及 PR 标题。这些修改应在 bump PR 合并之前完成因为后续的发布草稿创建与 NPM 发布都以 package.json 中的版本号为准。忽略更新如果本次合并的 PR 不需要发布新版本例如纯文档更新或其他无关紧要的变更直接关闭工作流生成的这个auto-bump-versionPR 即可。关闭 PR 后版本号保持不变不会触发后续的发布草稿创建流程。完整发布示例管线假设当前 package.json 版本为2.19.0你想合入一些 bug 修复并发布2.19.1完整流程如下将一个或若干包含修复的 PR 合并到默认开发分支next工作流 bump-version-on-merge-next.yml 将 package.json 中的版本自动提升到2.19.1-rc.0并打开一个新的版本提升 PR该 bump PR 合并后工作流 create-a-release-draft.yml 自动在 GitHub 上创建发布草稿到 releases 页面检查这个新草稿确认 tag 为v2.19.1-rc.0若这是候选版本请留意 This is a pre-release 复选框应处于勾选状态RC 版本会被自动勾选然后把 changelog 填入描述并发布工作流 publish-package-to-npm.yml 自动把该版本发布到 NPM标签为next当候选版验证完成、准备发布正式版时在bump-version-on-merge-next.yml生成的 PR 中把版本号去掉-rc后缀2.19.1-rc.0 - 2.19.1再次走第 3-5 步新版本将以latest标签发布最后把next分支合并回master为历史留存稳定版源码快照。实践要点小结版本号是发布流程的唯一事实来源三个工作流均通过action-nodejs-package-info读取 package.json 的version字段做判断任何手动打 tag、改 Release 标题都不会改变 NPM 发布行为。latest标签只属于稳定版即使发布动作统一带--tagnext非预发布版本也会被npm dist-tag add补上latest消费者默认安装永远拿到稳定版。构建产物随草稿一起生成发布草稿自动附带editorjs.umd.js与editorjs.mjs与 package.json 中main/module字段声明的入口一一对应方便不通过包管理器使用的用户直接从 Release 页面下载。不想发版就关掉 bump PR文档更新类改动无需发布时关闭自动生成的版本提升 PR 即可简单直接。回归对照发布前将草稿描述替换为 docs/CHANGELOG.md 中对应版本的条目同时结合该版本的Fix/New前缀判断版本段是否 bump 正确可作为每次发布前的人工检查清单。【免费下载链接】editor.jsA block-style editor with clean JSON output项目地址: https://gitcode.com/gh_mirrors/ed/editor.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ESP IoT Solution BLE TX Power Service(esp_tps)组件使用指南:从服务注册到发射功率上报的完整实践

ESP IoT Solution BLE TX Power Service(esp_tps)组件使用指南:从服务注册到发射功率上报的完整实践

ESP IoT Solution BLE TX Power Service(esp_tps)组件使用指南:从服务注册到发射功率上报的完整实践 【免费下载链接】esp-iot-solution Espressif IoT Library. IoT Device Drivers, Documentations and Solutions. 项目地址: https://git…

2026/9/19 2:38:00 阅读更多 →
Shark Explorer:在桌面上读懂 Android 堆转储的“内存去向“——LeakCanary 生态的支配树可视化桌面工具

Shark Explorer:在桌面上读懂 Android 堆转储的“内存去向“——LeakCanary 生态的支配树可视化桌面工具

Shark Explorer:在桌面上读懂 Android 堆转储的"内存去向"——LeakCanary 生态的支配树可视化桌面工具 【免费下载链接】leakcanary A memory leak detection library for Android. 项目地址: https://gitcode.com/gh_mirrors/le/leakcanary Shark…

2026/9/19 2:38:00 阅读更多 →
Mermaid 旧图重画,改 TaoToken 行不行

Mermaid 旧图重画,改 TaoToken 行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 2:38:00 阅读更多 →

最新新闻

FoundationPose工业级部署:CUDA-PyTorch-Eigen3兼容性实战指南

FoundationPose工业级部署:CUDA-PyTorch-Eigen3兼容性实战指南

1. 项目概述:为什么FoundationPose值得你花三天时间亲手部署 FoundationPose不是又一个“跑个demo就完事”的学术玩具,它是目前少有的、能把6D位姿估计这件事真正拉到工业级可用门槛的开源方案。我第一次在实验室用它追踪一个带纹理的金属齿轮时&#x…

2026/9/19 3:19:26 阅读更多 →
Monorepo实战指南:核心概念、工具选型与迁移避坑

Monorepo实战指南:核心概念、工具选型与迁移避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 3:19:26 阅读更多 →
整站下载实战:从工具选型到原理排坑,一篇讲透

整站下载实战:从工具选型到原理排坑,一篇讲透

做网站这些年,我几乎每隔一段时间就要面对一个看起来简单、做起来却让人头疼的需求:把某个网站完整地“搬”到本地。有时是为了给客户做一份可离线打开的演示稿,有时是想在网站改版前把旧版整体备份存档,有时单纯是遇到网络不稳定…

2026/9/19 3:19:26 阅读更多 →
从能回答到能干活:AI Agent生产级工程能力实战指南

从能回答到能干活:AI Agent生产级工程能力实战指南

从"能回答"到"能干活"这句话,我在过去一年里跟不少团队聊过,几乎每个人都会在某个时刻突然意识到:Demo里那个对答如流的AI,和生产环境里真正能替人分担工作的Agent,中间隔着的不是模型能力的差距&…

2026/9/19 3:19:26 阅读更多 →
开箱即用YOLO桌面工具:Rust+ONNX+WASM轻量部署方案

开箱即用YOLO桌面工具:Rust+ONNX+WASM轻量部署方案

1. 这不是又一个YOLO Demo,而是一套真正能塞进U盘带走的检测工作流你有没有过这样的经历:在客户现场做演示,临时需要跑个目标检测模型——结果发现得先装Python、配CUDA、拉权重、改路径、调环境……半小时过去,PPT还没打开。或者…

2026/9/19 3:19:26 阅读更多 →
STM32 I2C中断与DMA协同实战:状态机设计与总线可靠性优化

STM32 I2C中断与DMA协同实战:状态机设计与总线可靠性优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 3:18:26 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →