开源项目常用工具对比:(一)版本控制工具对比: release-it VS standard-version
编写开源项目时,通常需要控制版本、生成CHANGELOG等内容,我们通常会借助第三方工具来完成,现在就来介绍常用的2个工具 release-it
和 standard-version
.
Release-it
功能
- 版本管理:自动在
package.json
中递增版本号,支持预发布版本管理。 - 日志生成:自动生成变更日志,支持通过插件扩展日志格式。
- Git 操作:自动执行 Git commit、tag、push 等操作,将代码推送到远程仓库。
- 发布流程:支持自动发布到 npm、GitHub、GitLab 等平台,创建发行版。
- 构建与测试:通过 Hooks 执行测试、构建等命令。
- 插件支持:强大的插件体系,可以扩展功能。
使用方式
- 安装:通过 npm 安装
release-it
:npm install release-it --save-dev
- 配置:在项目根目录下创建配置文件
release-it.json
或在package.json
中添加配置项,例如:{ "release-it": { "git": { "commit": true, "tag": true, "push": true }, "npm": { "publish": true } } }
- 运行:在
package.json
中添加脚本:
然后执行{ "scripts": { "release": "release-it" } }
npm run release
来触发版本发布。
应用场景
- 适用于需要完整自动化发布流程的项目,尤其是 npm 包、GitHub 项目等。
- 适合在持续集成和持续部署(CI/CD)环境中使用,提高开发团队的工作效率。
Standard-version
功能
- 版本号更新:根据提交信息自动更新版本号,遵循语义化版本规范。
- 日志生成:自动生成
CHANGELOG.md
文件,记录新增功能、修复的 bug 等详细信息。 - Git 操作:创建 Git tag,但不会自动推送代码。
- 生命周期脚本:允许在 release 过程中执行自定义的命令,如
prebump
、postbump
、prechangelog
等。
使用方式
- 安装:通过 npm 安装
standard-version
:npm install standard-version --save-dev
- 配置:在项目根目录下创建配置文件
.versionrc
或在package.json
中添加配置项,例如:{ "scripts": { "prebump": "echo 'Running prebump script'", "postbump": "echo 'Running postbump script'" } }
- 运行:在
package.json
中添加脚本:
然后执行{ "scripts": { "release": "standard-version" } }
npm run release
来触发版本发布。
应用场景
- 适合需要版本号更新和日志生成的项目,尤其是遵循 Conventional Commits 规范的项目。
- 适用于个人开发者或团队开发者,简化版本控制和发布流程。
对比总结
自动化程度
- Release-it:自动化程度更高,可以完成从版本更新到代码推送、日志生成、平台发布的整个流程。
- Standard-version:主要专注于版本号更新和日志生成,不会自动推送代码或发布到 npm 等平台。
灵活性和扩展性
- Release-it:配置灵活,支持通过插件扩展功能,可以更好地适应不同项目的需求。
- Standard-version:配置相对简单,但足以满足基本的版本管理和日志生成需求。
社区和生态
- Release-it:被广泛应用于 npm 包、GitHub 项目等的自动化发布,如 Redux、Axios 等知名开源项目。
- Standard-version:也具有一定的用户基础,尤其在遵循 Conventional Commits 规范的项目中。
适用场景
- Release-it:如果项目需要完整的自动化发布流程,包括代码推送和平台发布,是更好的选择。
- Standard-version:如果只需要版本号更新和日志生成,可以满足需求。
综上所述,release-it
和 standard-version
都是优秀的版本管理和发布工具,各有优势。选择时可以根据项目的具体需求、团队的使用习惯以及对自动化程度的要求来决定使用哪个工具。
菲鸽 unibest 的选择
原本我想在 unibest
中引入 release-it
,然后看到 wot-ui
用的是 standard-version
, 于是就做了个对比。
经我调查, 前端生态中 vuejs
、vitejs
、react
这样的项目用的都是 standard-version
。
既然如此, unibest
会使用 standard-version
作为版本控制工具,敬请期待。
unibest 链接地址
- 文档地址:unibest.tech
- github 地址:github.com/feige996/un…
- gitee 地址:githee.com/feige996/un…
欢迎体验,欢迎star!
下面的是旧账号和旧文档,留个纪念。
- 旧的 github: github.com/codercup/un…
- 旧的文档地址:codercup.github.io/unibest-doc…