🛳 Ship.js
掌控你的下一个版本发布。
https://community.algolia.com/shipjs/
特性
- 自动化
- 最大限度地减少发布工作量,减少错误。
- 异步
- 无需在本地机器上发布。异步完成发布,继续你的工作。
- 协作
- 不必独自承担压力。与同事一起在 pull request 上审核下一个发布版本。
安装
运行以下命令将引导你进行交互式设置。
npx shipjs setup
这个交互式命令行界面将帮助你在你的包中安装 Ship.js 并为你的项目创建一个量身定制的配置文件。
为什么需要 Ship.js 🤷🏻
编码很有趣,调试和测试还可以,但发布却不是。
在发布时,你通常需要经历以下步骤:
- 更新
package.json
中的版本号 - 更新变更日志
- 实际发布(例如
npm run build && npm publish
) - 创建 git 标签
- 在 GitHub 上创建发布
可能出现的问题
- 你可能在发布过程中犯错。
- 团队成员之间的环境不同。
- 你独自发布,因为整个过程都在你的本地机器上进行。
- 这不是你的日常工作。错误可能发生。
- 在发布完成之前,你被阻塞无法做其他事情。
- 即使你有发布脚本,你也需要监视直到脚本顺利完成。
- 在脚本完成之前,你不想切换到另一个功能分支并在那里工作。
如何解决这些问题❓
在 Ship.js 中,发布过程分为三个部分。
第一部分:准备(shipjs prepare
)
运行 shipjs prepare
,它将简要执行以下操作:
- 确定下一个版本号。
- 更新版本和变更日志。
- 创建一个 pull request。
这个过程不到几分钟。
第二部分:审核
- 自己或与同事一起审核 PR。
- 如果需要,可以向 PR 添加更多提交。
- 你可以暂缓发布,从暂存分支构建并手动测试。
- 如果你想取消发布,只需关闭 PR 并删除暂存分支。
当你认为准备好发布时,合并 PR。
第三部分:触发发布(shipjs trigger
)
运行 shipjs trigger
,它将简要执行以下操作:
- 运行最终测试(单元测试、端到端测试等)。
- 发布到 NPM(或根据您的配置发布到其他地方)。
- 为该版本创建一个 git 标签。
- 在 GitHub 上为该标签创建一个发布。
您可以在 PR 合并后手动在基础分支上运行 shipjs trigger
。
然而,您也可以配置您的 CI 服务(例如 CircleCI)来为您完成这项工作。这意味着最耗时的过程是在 CI 服务上异步进行的,不会占用您的工作环境。
入门指南
让我们继续阅读指南。
或者,如果您更喜欢观看视频,也可以观看这个视频。
它与 semantic-release 有什么不同?
semantic-release 是一个用于完全自动化版本管理和包发布
的工具。
Ship.js 让您对发布过程有更多的控制。Ship.js 在每次发布之前自动创建一个 PR,这样您就可以:
- 确认下一个版本号是否正确。
- 确认哪些提交将被发布,并与同事讨论。
- 编辑自动生成的更新日志,使其更清晰易读。
- 对发布候选包运行任何自动化测试。
- 自动构建发布候选版本(使用 Pika CI 或 CodeSandbox)。
如何贡献?
贡献者 ✨
感谢这些优秀的人(表情符号说明):
Eunjae Lee 💻 📖 | Fred K. Schott 📖 | Yasuaki Uechi 💻 📖 | Dmitry Ivakhnenko 💻 📖 | James George 💻 📖 | kazuya kawaguchi 💻 📝 | tyankatsu 💻 📖 |
Haroen Viaene 💻 | 大柳伸也 💻 | 宋东勋 💻 | 宫田纯平 💻 | lulzneko 💻 📖 | 维纳亚克·库尔卡尼 💻 |
徽章
向世界展示你正在使用 Ship.js
[![deploy](https://img.shields.io/badge/deploy-🛳%20Ship.js-blue?style=flat)](https://github.com/algolia/shipjs)
<a title="deploy" href="https://github.com/algolia/shipjs" rel="nofollow">
<img src="https://img.shields.io/badge/deploy-🛳%20Ship.js-blue?style=flat" />
</a>