• Git做版本管理及CHANGELOG


    版本管理和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
    
    • 1

    添加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"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    完整的package.json

    commitizen + cz-conventional-changelog + commitlint +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": {
            "@commitlint/cli": "^17.6.6",
            "@commitlint/config-conventional": "^17.6.6",
            "commitizen": "^4.2.2",
            "cz-conventional-changelog": "^3.3.0",
            "standard-version": "^9.1.0"
        },
        "config": {
            "commitizen": {
                "path": "cz-conventional-changelog"
            }
        },
        "commitlint": {
            "extends": [
                "@commitlint/config-conventional"
            ]
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    js基础笔记学习53-练习2计算水仙花数2
    计算机网络 - 网络层
    onlyoffice报 error self signed certificate导致download failed错误处理
    基于Yolov8网络进行目标检测(三)-训练自己的数据集
    SpringCloud微服务-Eureka注册中心
    Mysql-----Innodb引擎行锁变为表锁
    一个卡人机混合智能脖子的问题
    Pytorch训练模型模型转Onnx推理模型及推理测试(通用全流程)
    “对症下药”,高效控价——控价方法详解
    3DCAT携手华为,打造XR虚拟仿真实训实时云渲染解决方案
  • 原文地址:https://blog.csdn.net/WEIGUO19951107/article/details/126671578