开源项目常用工具对比:(一)版本控制工具对比: release-it VS standard-version

589 阅读4分钟

开源项目常用工具对比:(一)版本控制工具对比: release-it VS standard-version

编写开源项目时,通常需要控制版本、生成CHANGELOG等内容,我们通常会借助第三方工具来完成,现在就来介绍常用的2个工具 release-itstandard-version.

Release-it

功能

  • 版本管理:自动在 package.json 中递增版本号,支持预发布版本管理。
  • 日志生成:自动生成变更日志,支持通过插件扩展日志格式。
  • Git 操作:自动执行 Git commit、tag、push 等操作,将代码推送到远程仓库。
  • 发布流程:支持自动发布到 npm、GitHub、GitLab 等平台,创建发行版。
  • 构建与测试:通过 Hooks 执行测试、构建等命令。
  • 插件支持:强大的插件体系,可以扩展功能。

使用方式

  1. 安装:通过 npm 安装 release-it
    npm install release-it --save-dev
    
  2. 配置:在项目根目录下创建配置文件 release-it.json 或在 package.json 中添加配置项,例如:
    {
      "release-it": {
        "git": {
          "commit": true,
          "tag": true,
          "push": true
        },
        "npm": {
          "publish": true
        }
      }
    }
    
  3. 运行:在 package.json 中添加脚本:
    {
      "scripts": {
        "release": "release-it"
      }
    }
    
    然后执行 npm run release 来触发版本发布。

应用场景

  • 适用于需要完整自动化发布流程的项目,尤其是 npm 包、GitHub 项目等。
  • 适合在持续集成和持续部署(CI/CD)环境中使用,提高开发团队的工作效率。

Standard-version

功能

  • 版本号更新:根据提交信息自动更新版本号,遵循语义化版本规范。
  • 日志生成:自动生成 CHANGELOG.md 文件,记录新增功能、修复的 bug 等详细信息。
  • Git 操作:创建 Git tag,但不会自动推送代码。
  • 生命周期脚本:允许在 release 过程中执行自定义的命令,如 prebumppostbumpprechangelog 等。

使用方式

  1. 安装:通过 npm 安装 standard-version
    npm install standard-version --save-dev
    
  2. 配置:在项目根目录下创建配置文件 .versionrc 或在 package.json 中添加配置项,例如:
    {
      "scripts": {
        "prebump": "echo 'Running prebump script'",
        "postbump": "echo 'Running postbump script'"
      }
    }
    
  3. 运行:在 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-itstandard-version 都是优秀的版本管理和发布工具,各有优势。选择时可以根据项目的具体需求、团队的使用习惯以及对自动化程度的要求来决定使用哪个工具。

菲鸽 unibest 的选择

原本我想在 unibest 中引入 release-it,然后看到 wot-ui 用的是 standard-version, 于是就做了个对比。

经我调查, 前端生态中 vuejsvitejsreact 这样的项目用的都是 standard-version

既然如此, unibest 会使用 standard-version 作为版本控制工具,敬请期待。

unibest 链接地址

欢迎体验,欢迎star!

下面的是旧账号和旧文档,留个纪念。