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 一键发布?
想象一下一次常规的版本发布,你通常需要:
- 手动修改
package.json里的版本号; - 执行
git add/git commit/git tag; git push把提交和标签推送到远端;- 编写并发布 Release 说明(GitHub Release);
- 登录 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 releaserelease-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.json的version字段;没有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 分钟回顾
npm init release-it完成安装;npm run release启动交互式一键发布;- 用
.release-it.json定制提交信息、GitHub Release、hooks 钩子; --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),仅供参考