当前位置: 首页 > news >正文

Git做版本管理及CHANGELOG

在这里插入图片描述

规范化的提交信息除了能很好描述项目的修改,还有一个很好的作用就是能根据提交记录来生成CHANGELOG.MD和自动生成版本号等功能。

standard-version

一个用于生成CHANGELOG.md和进行SemVer(语义化版本号)发版的命令行工具

主要功能:

  • 自动修改最新版本号,可以是package.json或者自定义一个文件
  • 读取最新版本号,创建一个最新的git tag
  • 根据提交信息,生成CHANGELOG.md
  • 创建一个新提交包括 CHANGELOG.mdpackage.json

语义化版本控制(SemVer)

先简单了解下什么是语义化的版本控制,其是由GitHub发起的一份用于规范版本号递增的规则,

版本格式

主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号(major):当你做了不兼容的 API 修改,
  • 次版本号(minor):当你做了向下兼容的功能性新增,可以理解为Feature版本,
  • 修订号(patch):当你做了向下兼容的问题修正,可以理解为Bug fix版本。

先行版本号可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

先行版本

当即将发布大版本改动前,但是又不能保证这个版本的功能 100% 正常,这个时候可以发布先行版本:

  • alpha: 内部版本
  • beta: 公测版本
  • rc: 候选版本(Release candiate)

比如:1.0.0-alpha.0,1.0.0-alpha.1,1.0.0-rc.0,1.0.0-rc.1等。

standard-verstion 生成的CHANGELOG只会包含feat,fix,BREACK-CHANGE类型的提交记录

使用

npm i --save-dev standard-version

添加npm script,完整的命令如下。

{
    scripts: {
        "release": "standard-version",
        "release:alpha": "standard-version --prerelease alpha",
        "release:rc": "standard-version --prerelease rc",
        "release:major": "npm run release -- --release-as major",
        "release:minor": "npm run release -- --release-as minor",
        "release:patch": "npm run release -- --release-as patch"
    }
}

执行过后会修改 package.version 并修改CHANGELOG 文件。

完整的 package.json

commitizen + cz-conventional-changelog + standard-version

{
    "name": "blog",
    "version": "1.0.0",
    "description": "blog",
    "main": "index.js",
    "scripts": {
        "start": "npm run dev",
        "release": "standard-version",
        "release:alpha": "standard-version --prerelease alpha",
        "release:rc": "standard-version --prerelease rc",
        "release:major": "npm run release -- --release-as major",
        "release:minor": "npm run release -- --release-as minor",
        "release:patch": "npm run release -- --release-as patch"
    },
    "devDependencies": {
        "commitizen": "^4.2.2",
        "cz-conventional-changelog": "^3.3.0",
        "standard-version": "^9.1.0"
    },
    "config": {
        "commitizen": {
            "path": "cz-conventional-changelog"
        }
    }
}

相关文章:

  • python经典编程100例(1)
  • GO语言 | go work 神一般的管理 多个module没烦恼
  • 【C语言】指针数组
  • 基于51单片机数字电压表仿真设计_数码管显示
  • 种草模式崛起!小红书KOL达人种草成推广热门方向!
  • Git Commit规范指北
  • 易观之星 | “2022年度用户推荐数字应用”投票通道开启
  • Flutter实战之go_router路由组件入门指南
  • Java--MybatisPlus Wrapper构造器;分页;MP代码生成器(四)
  • JS高级(数据类型,数据_变量_内存)
  • 分类模型评估的实际编码
  • 攻防世界WEB练习-mfw
  • 设计模式:设计模式概述
  • 你真的了解并查集?
  • 如何设计散列表(哈希表)
  • 4. 路由到控制器 - Laravel从零开始教程
  • js算法-归并排序(merge_sort)
  • magento2项目上线注意事项
  • PAT A1092
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • SwizzleMethod 黑魔法
  • Wamp集成环境 添加PHP的新版本
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 成为一名优秀的Developer的书单
  • 从伪并行的 Python 多线程说起
  • 基于 Babel 的 npm 包最小化设置
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端性能优化——回流与重绘
  • 深入浅出Node.js
  • 提醒我喝水chrome插件开发指南
  • 我看到的前端
  • 由插件封装引出的一丢丢思考
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 最近的计划
  • Mac 上flink的安装与启动
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #1015 : KMP算法
  • (C++)八皇后问题
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)图像的%2线性拉伸
  • (一)u-boot-nand.bin的下载
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Micro Framework初体验
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET单元测试
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @EnableAsync和@Async开始异步任务支持
  • @SuppressWarnings(unchecked)代码的作用
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [20140403]查询是否产生日志