auto-changelog的简单使用

auto-changelog的简单使用

自动化生成Git提交记录,CHANGELOG.md文件

github:https://github.com/cookpete/auto-changelog

安装

npm install -g auto-changelog

配置脚本

package.json文件下

"scripts": {"changelog": "auto-changelog -p --commit-url http://xxxx/xxxx/amwiki/-/commit/{id} --sort-commits date-desc --commit-limit true --ignore-commit-pattern chore --hide-empty-releases true"
}

运行脚本

npm run changelog

参考配置列表

Usage: auto-changelog [options]Options:-o, --output [file]                 # output file, default: CHANGELOG.md-c, --config [file]                 # config file location, default: .auto-changelog-t, --template [template]           # specify template to use [compact, keepachangelog, json], default: compact-r, --remote [remote]               # specify git remote to use for links, default: origin-p, --package                       # use version from package.json as latest release-v, --latest-version [version]      # use specified version as latest release-u, --unreleased                    # include section for unreleased changes-l, --commit-limit [count]          # number of commits to display per release, default: 3-b, --backfill-limit [count]        # number of commits to backfill empty releases with, default: 3--commit-url [url]              # override url for commits, use {id} for commit id--issue-url [url]               # override url for issues, use {id} for issue id--merge-url [url]               # override url for merges, use {id} for merge id--compare-url [url]             # override url for compares, use {from} and {to} for tags--issue-pattern [regex]         # override regex pattern for issues in commit messages--breaking-pattern [regex]      # regex pattern for breaking change commits--merge-pattern [regex]         # add custom regex pattern for merge commits--commit-pattern [regex]        # pattern to include when parsing commits--ignore-commit-pattern [regex] # pattern to ignore when parsing commits--tag-pattern [regex]           # override regex pattern for version tags--tag-prefix [prefix]           # prefix used in version tags, default: v--starting-version [tag]        # specify earliest version to include in changelog--starting-date [yyyy-mm-dd]    # specify earliest date to include in changelog--ending-version [tag]          # specify latest version to include in changelog--sort-commits [property]       # sort commits by property [relevance, date, date-desc, subject, subject-desc], default: relevance--release-summary               # display tagged commit message body as release summary--unreleased-only               # only output unreleased changes--hide-empty-releases           # hide empty releases--hide-credit                   # hide auto-changelog credit--handlebars-setup [file]       # handlebars setup file--append-git-log [string]       # string to append to git log command--append-git-tag [string]       # string to append to git tag command--prepend                       # prepend changelog to output file--stdout                        # output changelog to stdout--plugins [...name]             # use plugins to augment commit/merge/release information-V, --version                       # output the version number-h, --help                          # output usage information# Write log to CHANGELOG.md in current directory
auto-changelog# Write log to HISTORY.md using keepachangelog template
auto-changelog --output HISTORY.md --template keepachangelog# Disable the commit limit, rendering all commits for every release
auto-changelog --commit-limit false

配置示例

当前配置

"changelog": "auto-changelog -p --commit-url http://192.168.217.8/xxxx/xxxx/-/commit/{id} --sort-commits date-desc --commit-limit true --ignore-commit-pattern chore --hide-empty-releases true"

命令配置解释:

-p:根据package发布版本进行分类

–commit-url http://192.168.217.8/xxxx/xxxx/-/commit/{id}:提交commit地址,动态拼接commitid

–sort-commits date-desc:根据commit时间降序

–commit-limit true:限制每次release展示的commit数量

–ignore-commit-pattern chore:忽略指定commit提交,此处忽略commit信息以chore开头的commit

–hide-empty-releases true:隐藏空的release

注意:配置与配置之间有空格

生成md文件示例

上面配置示例实际生成的md文件如下

默认生成示例

自定义模板

支持用自定义模板生成md文件

  1. 新建一个模板文件如:changelog-template.hbs

  2. 模板文件入填入代码,使用handlebars模板引擎

    # 更新日志
    {{#each releases}}
    ## {{isoDate}}{{#each merges}}
    - A merge has a {{message}}, an {{id}} and a {{href}} to the PR.{{/each}}{{#each fixes}}
    - Each fix has a {{commit}} with a {{commit.subject}}, an {{id}} and a {{href}} to the fixed issue.{{/each}}{{#each commits}}
    - {{subject}}[{{shorthash}}]({{href}}){{!-- 这里需要有个换行 否则二级标题会被渲染进li中 --}}{{/each}}
    {{/each}}
    
  3. 修改package.json文件中的脚本,以提供的模板生成内容。

    1. 模板文件changelog-template.hbs放在项目根目录,与package.json同级即可
    2. -o ./library/home-首页.md 指定输出文件目录
    "scripts": {"changelog-template": "auto-changelog --template changelog-template.hbs -o ./library/home-首页.md -p --sort-commits date-desc --commit-limit false --ignore-commit-pattern chore --hide-empty-releases true"
    },
    
  4. 运行命令后,即可按照我们的模板生成内容

模板修改

  1. 模板中的这些变量啥意思?源码数据文件->
    数据源示例

  2. 更个性化一点的修改,渲染自己想要的数据。

    找到auto-changelog源码包中的template.js文件,路径为node_modules\auto-changelog\src\template.js

    compileTemplate函数中调用自己的函数:

    const compileTemplate = async (releases, options) => {const { template, handlebarsSetup } = optionsif (handlebarsSetup) {const path = /^\//.test(handlebarsSetup) ? handlebarsSetup : join(process.cwd(), handlebarsSetup)const setup = require(path)if (typeof setup === 'function') {setup(Handlebars)}}//渲染之前调用,修改源数据customDate(releases)const compile = Handlebars.compile(await getTemplate(template), COMPILE_OPTIONS)if (template === 'json') {return compile({ releases, options })}return cleanTemplate(compile({ releases, options }))
    };//自定义函数
    function customDate(releases) {// 存放已经出现过的时间  进行去重操作let Time=[];    releases.forEach(item1 => {item1.commits.forEach((item2,index2)=>{// 遍历当前release下的所有commitif(Time.indexOf(item2.niceDate)==-1){Time.push(item2.niceDate);//没有出现过 可以显示item2.showTime=true;let date=new Date(item2.date).toLocaleDateString();item2.isoDate=date.replace(/\//g,"-");}else{// 出现过item2.showTime=false;}})});
    }
    
  3. 修改模板文件

    # 更新日志
    {{#each releases}}
    {{!-- ## {{isoDate}} --}}{{#each merges}}
    - A merge has a {{message}}, an {{id}} and a {{href}} to the PR.{{/each}}{{#each fixes}}
    - Each fix has a {{commit}} with a {{commit.subject}}, an {{id}} and a {{href}} to the fixed issue.{{/each}}{{#each commits}}{{#if showTime}}### {{isoDate}}{{/if}}
    - {{subject}}[{{shorthash}}]({{href}})
    {{!-- 这里需要有个换行 否则二级标题会被渲染进li中 --}}{{/each}}
    {{/each}}
    
  4. 这里实现的效果是输出每天的提交记录:
    生成示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/77767.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Jmeter】配置不同业务请求比例,应对综合场景压测

目录 前言 Jmeter5.0新特性 核心改进 其他变化 资料获取方法 前言 Jmeter 5.0这次的核心改进是在许多地方改进了对 Rest 的支持,此外还有调试功能、录制功能的增强、报告的改进等。 我也是因为迁移到了Mac,准备在Mac上安装Jmeter的时候发现它已经…

blender 毛发粒子

新建平面,点击右侧粒子系统,选择毛发,调整毛发长度,数量(Number),调整数量是为了避免电脑卡顿; 上面设置的每一根柱子都可以变成一个物体,点击渲染,渲染为选择…

EdgeBox_tx1_A200 PyTorch v1.9.0 环境部署

大家好,我是虎哥,今天远程帮助几个小伙伴在A200 控制器上安装PyTorch v1.9.0 torchvision v0.10.0,中间也是经历了很多波折,当然,大部分是网络问题和版本适配问题,所以完事后,将自己完整可用的过…

论文阅读 - Few-shot Network Anomaly Detection via Cross-network Meta-learning

论文链接:https://arxiv.org/pdf/2102.11165.pdf 目录 摘要: 引言 问题定义 方法 Graph Deviation Networks Cross-network Meta-learning 摘要: 网络异常检测旨在找到与绝大多数行为显着不同的网络元素(例如节点、边、子图…

JNI之Java实现蓝牙交互

蓝牙概述 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间,通过蓝牙设备之间的无线通信实现数据传输,实现数据传输&#xf…

【汇总】解决Ajax请求后端接口,返回ModelAndView页面不跳转

【汇总】解决Ajax请求后端接口,返回ModelAndView不跳转 问题发现问题解决方法一:直接跳转到指定URL(推荐)方法二:将返回的html内容,插入到页面某个元素中方法三:操作文档流方法四:使…

docker更换数据存储路径

1. 先停掉docker服务 sudo systemctl stop docker 可能会出现的问题: 这样会导致docker关闭失败,解决办法:systemctl stop docker.socket 确保docker关闭: 2.备份现在的 Docker 数据存储目录 /var/lib/docker(默认路径) mv /var/lib/docker /var/lib/…

在IDEA同一个窗口中同时打开多个独立项目

文章说明 本文主要说明如何在Intellij Idea中同时打开多个独立的Maven项目。 我在使用idea的时候,由于自己负责了很多项目,经常要在不通的代码之间切换来切换去。然后搜索代码的时候也只能搜到当前打开的这个项目。因为这个原因,一些小项目…

vscode无法连接远程服务器的可能原因:远程服务器磁盘爆了

vscode输入密码后一直等待,无法进入远程服务器终端: 同时Remote-SSH输出包含以下内容 在日志中的以下几个部分: [17:15:05.529] > wget download failed 这表明VS Code尝试在远程服务器上下载VS Code服务器时失败了。> Cannot write…

多模态学习

一、目标 三、多模态核心任务 题目:

(12)理解委托,反射,Type,EvenInfo,插件, 组合枚举,BindingFlags,扩展方法及重载,XML认识

一、复习委托事件 1、委托复习。 private delegate int MyDelegate(int a, int b); //1.定义委托类型private static void Main(string[] args){MyDelegate md new MyDelegate(AddDelegate);//2.声明委托变量int result md(1, 2);//3.调用委托Console.WriteLine(result);Cons…

教您一招解决找素材困难好的方法

创作视频内容时,找到合适的素材是至关重要的。然而,有时候寻找视频素材可能会变得困难。本文将分享一些实用的方法,帮助您轻松解决找视频素材困难的问题。 素材库和在线平台是寻找视频素材的首选方法。 利用专业的视频剪辑工具 在电脑上安…

【云原生】K8S二进制搭建二:部署CNI网络组件

目录 一、K8S提供三大接口1.1容器运行时接口CRI1.2云原生网络接口CNI1.3云原生存储接口CSI 二、Flannel网络插件2.1K8S中Pod网络通信2.2Overlay Network2.3VXLAN2.4Flannel 三、Flannel udp 模式的工作原理3.1ETCD 之 Flannel 提供说明 四、vxlan 模式4.1Flannel vxlan 模式的工…

计算机视觉(六)图像分类

文章目录 常见的CNNAlexnet1乘1的卷积 VGG网络Googlenet(Inception V1、V2、V3)全局平均池化总结 Resnet、ResnextResNet残差网络ResNeXt网络 应用案例VGGResnet 常见的CNN Alexnet DNN深度学习革命的开始 沿着窗口进行归一化。 1乘1的卷积 VGG网络…

Linux葵花宝典-无需自宫版

1. Linux简介 1.1 什么是Linux Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由Linus Torvalds于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、…

unraid docker桥接模式打不开页面,主机模式正常

unraid 80x86版filebrowser,一次掉电后,重启出现权限问题,而且filebrowser的核显驱动不支持amd的VA-API 因为用不上核显驱动,解压缩功能也用不上,官方版本的filebrowser还小巧一些,18m左右 安装的时候总是…

HDFS中的sequence file

sequence file序列化文件 介绍优缺点格式未压缩格式基于record压缩格式基于block压缩格式 介绍 sequence file是hadoop提供的一种二进制文件存储格式一条数据称之为record&#xff08;记录&#xff09;&#xff0c;底层直接以<key, value>键值对形式序列化到文件中 优…

浅析RabbitMQ死信队列

原文首发于公众号【CSJerry】 在现代分布式系统中&#xff0c;消息队列扮演着至关重要的角色。它们可以实现应用程序之间的异步通信&#xff0c;并确保数据的可靠传输和处理。而在这个领域中&#xff0c;RabbitMQ作为一种强大而受欢迎的消息队列解决方案&#xff0c;具备了高…

基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程

基于JenkinsPythonUbuntuDocker的接口/UI自动化测试环境部署详细过程 1 Jenkins是什么&#xff1f;2 Jenkins目标是什么&#xff1f;3 什么是CI/CD?3.1 CI持续集成3.2 CD持续部署3.3 CD持续交付 4 Ubuntu环境4.1 环境需求4.2 实现思路 5 Ubuntu下安装Docker6 安装Jenkins6.1 拉…

idea如何加快创建Maven项目的速度

一、下载archetype-catalog.xml 下载archetype-catalog.xml的地址 二、配置 以下所说的配置都指全局配置。 配置Maven -DarchetypeCataloglocal -Dfile.encodinggbk