news 2026/9/23 12:03:46

5分钟玩转一键发布:release-it 发布自动化工具完整入门指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5分钟玩转一键发布:release-it 发布自动化工具完整入门指南

5分钟玩转一键发布:release-it 发布自动化工具完整入门指南

【免费下载链接】release-it🚀 Automate versioning and package publishing项目地址: https://gitcode.com/gh_mirrors/re/release-it

对于需要频繁发布软件包或 Git 项目的开发者来说,每次发布前手动改版本号、提交代码、打标签、推送远端、再更新发布说明,既繁琐又容易出错。release-it正是一款通用的发布自动化工具(CLI 命令行工具),它能把这些工作串联成一条流水线:自动升级版本号、执行 Git 提交/打标签/推送、生成变更日志(changelog)、创建 GitHub/GitLab Release,并发布到 npm。整个流程只需一条命令,支持交互式确认,也支持在 CI 流水线中全自动运行。

为什么需要 release-it 一键发布?

想象一下一次常规的版本发布,你通常需要:

  1. 手动修改package.json里的版本号;
  2. 执行git add/git commit/git tag
  3. git push把提交和标签推送到远端;
  4. 编写并发布 Release 说明(GitHub Release);
  5. 登录 npm 执行npm publish

任何一步漏掉或出错,都可能让发布"卡在半路"。release-it把这些步骤全部接管,一条npm run release命令跑完全程,让你真正体验"一键发布"。它被 jQuery、Redux、Axios、js-cookie 等大量知名项目使用,可靠性经过了充分验证。

三步安装:从 0 到可运行

第一步:初始化安装

在项目根目录执行一条命令,release-it 会自动完成安装并写入推荐配置:

npm init release-it

第二步:确认 package.json 配置

安装后package.json会多出一个release脚本(版本号为示例值):

{ "scripts": { "release": "release-it" } }

如果你更习惯手动安装,也可以执行npm install -D release-it,然后手动在package.json中加上"release": "release-it"脚本。

第三步:启动发布

在项目根目录运行:

npm run release

release-it 会先展示变更日志,然后提示你选择新版本号(补丁版 patch / 次版本 minor / 主版本 major),后续每一步操作都会请求你的确认,完全掌控在你手中。

核心功能一览:一条命令都帮你做了什么

功能说明
版本升级自动修改package.json等文件中的版本号
Git 自动化提交、打标签、推送到任意远端
发布前钩子在执行任务前自动运行测试、构建等任意命令
变更日志基于 Git 历史自动生成 changelog,并用作发布说明
GitHub / GitLab Release自动创建带说明和附件的 Release
发布到 npm自动执行版本发布,支持各种注册表
预发布管理轻松创建 alpha、beta、rc 等预发布版本
插件扩展内置插件体系,几乎可以无限扩展

这些能力都由内置插件驱动,源码位于 lib/plugin/ 目录,例如 Git 操作在 lib/plugin/git/、GitHub Release 在 lib/plugin/github/、npm 发布在 lib/plugin/npm/。

配置文件:5 分钟看懂 release-it 配置

大多数项目会在根目录放一个.release-it.json文件,或直接在package.json中加release-it字段。官方默认配置位于 config/release-it.json,所有可用选项都可以参考这个文件。

一份典型的入门配置长这样:

{ "git": { "commitMessage": "chore: release v${version}" }, "github": { "release": true } }

只需两行,就能自定义提交信息模板,并开启"自动创建 GitHub Release"。配置字段的完整说明见 docs/configuration.md。

发布前自动跑测试:hooks 钩子

release-it 最实用的功能之一是脚本钩子(hooks)——在发布流程的任意节点执行你自己的命令,比如发布前先跑测试:

{ "hooks": { "before:init": ["npm run lint", "npm test"], "after:release": "echo Successfully released ${name} v${version}" } }
  • before:init:在一切开始前执行(适合 lint、测试);
  • after:bump:版本号升级后执行(适合重新构建);
  • after:release:全部发布成功后执行(适合发通知)。

命令中可以使用${version}${name}等模板变量。完整钩子清单与变量说明见 docs/configuration.md。

两种运行模式:交互式 vs CI 全自动

默认是交互模式:每个任务执行前都会询问你是否继续,适合本地手动发布,全程可控。

加上--ci参数即进入全自动模式:跳过所有确认,配置好的任务直接依次执行,适合放进 CI/CD 流水线。实际上,release-it 检测到处于持续集成环境(如 GitHub Actions)时会自动启用该模式,无需额外设置。

如上图所示,选择pre类型即可创建1.0.0-alpha.0这样的预发布版本,配合 npm 的预发布通道,可以安全地向用户推送测试版。预发布的完整用法见 docs/pre-releases.md。

其他常用命令行参数

参数作用
--dry-run演练模式:只展示将要执行的命令,不做任何实际变更
--release-version仅打印下一个版本号,不执行发布
--changelog仅打印变更日志,不执行发布
--only-version仅交互式确定版本,其余任务自动执行
-V/-VV输出钩子/内部命令的详细日志,便于排查问题

其中--dry-run是新手的最佳朋友:改完配置先演练一遍,确认无误再真正发布。详细说明见 docs/dry-runs.md。

进阶场景:CI 自动发布与 GitLab 支持

在 CI 中一键发布

把发布流程交给流水线是 release-it 最常见的生产用法。核心思路只有一条:在 CI 环境中准备好NPM_TOKEN(发布 npm)和GITHUB_TOKEN(创建 GitHub Release)两个环境变量,然后运行npm run release即可。各平台(GitHub Actions、GitLab CI、Travis、CircleCI)的完整配置示例见 docs/ci.md。

GitLab 用户

使用gitlab.release: true配置并设置GITLAB_TOKEN环境变量,即可自动创建 GitLab Release,详见 docs/gitlab-releases.md。

变更日志自定义

默认 changelog 基于git log生成。想要更规范的格式,可以借助社区插件,例如 conventional-changelog(根据提交规范推荐版本号并维护CHANGELOG.md)、keep-a-changelog、git-cliff 等,配方示例位于 docs/recipes/ 目录。

常见问题速查

Q:release-it 如何判断"当前最新版本"?A:优先读取package.jsonversion字段;没有package.json的项目则使用最新的 Git tag;两者都没有时退回0.0.0

Q:npm 发布失败了,但 Git 标签没推上去,怎么办?A:用release-it --no-increment --no-npm跳过 npm 发布,重新推送同一个标签即可。

Q:单仓库多包(monorepo)支持吗?A:支持,官方提供了 monorepo 配置配方:docs/recipes/monorepo.md。

Q:想在脚本中编程调用 release-it?A:可以,参考 docs/recipes/programmatic.md。

总结:5 分钟回顾

  1. npm init release-it完成安装;
  2. npm run release启动交互式一键发布;
  3. .release-it.json定制提交信息、GitHub Release、hooks 钩子;
  4. --dry-run演练、--ci全自动,两种模式随需切换。

release-it 用一行命令替你管好"版本号 → Git → 变更日志 → Release → npm"的整条发布链路,是 npm 生态中事实上的发布自动化标准工具。现在就去你的项目里试一次npm run release吧!

更多资料:完整配置选项 docs/configuration.md、插件开发指南 docs/plugins.md、环境变量说明 docs/environment-variables.md、版本历史 CHANGELOG.md。

【免费下载链接】release-it🚀 Automate versioning and package publishing项目地址: https://gitcode.com/gh_mirrors/re/release-it

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 12:02:17

车载以太网H-MTD接口原理与测试工程实践

1. 为什么车载以太网线束测试接口不能照搬消费电子那一套?车载以太网不是把电脑网线塞进车里就完事了。我第一次在某德系主机厂的ECU测试台架上看到H-MTD接口时,差点以为是某种工业级航空插头——它比标准RJ45宽出近一倍,外壳带金属屏蔽裙边&…

作者头像 李华
网站建设 2026/9/23 12:02:15

主变零序电流保护与复合电压闭锁过流保护的区别与配合

聊一个在变电站现场被追问过无数遍的问题:主变零序电流保护和主变电压电流保护到底有什么区别?很多刚接触继电保护的人,甚至部分干了一两年的运维人员,看到定值单上既有“零序过流”,又有“复合电压闭锁过流”&#xf…

作者头像 李华
网站建设 2026/9/23 12:01:57

光伏板积灰识别四分类:Python深度学习实战与运维决策

简介:这份资源是面向计算机相关专业学生与深度学习实战学习者的太阳能光伏板积灰识别项目,可直接用于毕业设计、课程设计或期末大作业,重点解决光伏板表面灰尘的自动分类识别问题。项目采用自制灰尘数据集完成四分类任务,方法上融…

作者头像 李华
网站建设 2026/9/23 12:01:52

ISP 3A算法原理与FPGA实现关键技术解析

简介:本资源是一份面向图像处理工程师、嵌入式视觉开发者及ISP算法学习者的专业技术文档,系统讲解ISP 3A(自动白平衡AWB、自动曝光AE、自动增益控制AGC)核心算法原理与工程实现。针对摄像机成像与人眼视觉差异导致的偏色、曝光失衡…

作者头像 李华
网站建设 2026/9/23 12:01:46

集成稳压器原理与实战:从黑盒架构到热-地-EMC协同设计

1. 为什么“集成稳压器”不是简单把几个电阻电容焊在一起?“集成稳压器消除了对分立元件的需求”——这句话乍看像一句技术宣传语,但在我拆解过上百块电源板、亲手调试过三十余种不同负载场景后,它其实是一条被严重低估的工程分水岭。它不是说…

作者头像 李华
网站建设 2026/9/23 12:00:16

Mosquitto 的 IPv6 支持与实践:从 test.mosquitto.org 的 AAAA 记录说起

Mosquitto 的 IPv6 支持与实践:从 test.mosquitto.org 的 AAAA 记录说起 【免费下载链接】mosquitto Eclipse Mosquitto - An open source MQTT broker 项目地址: https://gitcode.com/gh_mirrors/mos/mosquitto 本文以 2012 年官方博客《IPv6 on Test Server…

作者头像 李华