在这之前,做一个开源项目,我需要使用以下包,才能实现,git提交标准化,版本号管理,changelog自动生成等功能,还得使用我自己开发的项目 standard-version-helper 才能实现控制台交互式升级版本的功能;
当然自然也没有在 Github Actions 中自动发布版本的功能。
当您如用了 Cvlar 之后,您只需要选择性保留 commitlint
即可实现前面说的所有功能,而且还有更多的功能。
commitizen- commitlint
commitlint-config-czcommitlint-config-git-commit-emojiconventional-changelogconventional-changelog-clicz-conventional-changelogcz-customizablestandard-version@kwooshung/standard-version-helper
- C:
commit
- V:
version
- L:
changelog
- A:
auto
- R:
release
当然,虽然名字叫 Cvlar,功能并不局限于此。
cvlar,是一个工具合集的首字母组成的词,没有具体的意义,但是怎么读呢?根据单词的发音,可以推出音标[siːvəlɑr]
,而读起来感觉和中文的 思维乐
很相似,所以就起了这么一个名字;
因为编程这个职业,需要大量的思考,作者更希望大家在乐趣中编程。(好吧,我承认,其实是因为先有的名字,这个是强行解释的😂)
- 简单记住:命令
cvlar
即可,也可使用cvlar -h/help
查看帮助; - 轻松选择并运行:
package.json
中的scripts
脚本; - 包管理:
- 轻松选择
npm
、yarn
、pnpm
,或其他包管理工具,自动安装; - 可设置源,不会影响原有配置;
- 轻松选择
- git提交:
- 轻松选择 '提交 types' 和
提交 scopes
; - 写入 '短说明'、'长说明'、'关闭 issues'、自定义 '字段'、验证 '提交信息' 等,同时还能自动 '推送到仓库';
- 若您希望希望
commit message
使用英文,而自己又不擅长英文,也支持通过 google 自动翻译成您指定的语言;
- 轻松选择 '提交 types' 和
- 版本管理:
- 轻松 '升级版本号' 选择 '主要版本'、'次要版本'、'补丁版本' 和 '预览版本',而 '预览版本' 可自动迭代 '预览版本号',比如
v1.0.0-preview.1
、v1.0.0-preview.2
等; - 你也可以指定 '升级版本号';也可以 '降级版本';
- 可自动生成 'changelog',并自动 '推送到仓库';
- 轻松 '升级版本号' 选择 '主要版本'、'次要版本'、'补丁版本' 和 '预览版本',而 '预览版本' 可自动迭代 '预览版本号',比如
- 日志管理:轻松设置 '模板',自动根据
git message
生成changelog
,更是可以通过 Google 翻译,自动翻译成 多种语言 日志,自动 '推送到仓库'; - 自动发布:
- 在
Github Actions
中,调用cvlar -r
命令,将会自动分析日志
文件,将其自动发布到仓库版本页面中。 - 参考:本仓库的 releases 页;
- 在
- 配置简单:
- 也可以通过
cvlar -i/init
,交互式生成配置文件; - 初始化交互式菜单,支持中文和英文,后续的使用,支持任意语言,只需要在
cvlar
的配置文件中自定义即可; - 配置文件本可支持
js
、cjs
和mjs
;- 为了方便只配置一次
commit types
和commit scopes
; - 发现
commitlint
无法识别mjs
,所以暂时只支持cjs
和js
格式的配置;
- 为了方便只配置一次
- 参考:
- 也可以通过
- 菜单可通过配置自定义语言
- 提升工作效率
- 对新手友好
npm install @kwooshung/cvlar -D
yarn add @kwooshung/cvlar -D
pnpm add @kwooshung/cvlar -D
如果你有 commitlint
的话,建议项目中安装,因为你可能需要在 .commitlintrc.cjs
中这样做:
const types = require('./scripts/ks-cvlar.types.cjs');
const scopes = require('./scripts/ks-cvlar.scopes.cjs');
const { ConvertToLintTypes, ConvertToLintScopes } = require('@kwooshung/cvlar'); // 需要引入它
方便引入 @kwooshung/cvlar
需要在 package.json
中的 scripts
中配置 cvlar
命令,如下:
{
"scripts": {
"cvlar": "cvlar"
}
}
而后 npm cvlar [-xxx]
执行
如果你没有 commitlint
的话,建议全局安装;
直接使用 cvlar [-xxx]
执行
后续如果需要使用 commitlint
,需要再在项目中安装一次;
- 方便引入
@kwooshung/cvlar
- 直接使用
cvlar [-xxx]
执行
- 第一次使用,需要安装两次,一次
全局
,一次开发依赖
,后续只需要根据需要,项目中选择性安装即可。
- 初始化配置,生成的配置文件,仅包含 中文 和 英文 两种语言的配置,且在配置中加入了大量对应的注释,方便理解;
cvlar
支持任意语言,只需要在cvlar
的配置文件中自定义即可;- 初始化之后的配置,
.ks-cvlarrc.cjs
可以存在任何位置,上图因为检测到了配置文件,所以没有出现指定保存路径的选项;
这里使用 重新生成日志 作为演示,因为它是由 清理日志 和 生成日志 两个步骤组成的。
- name: Auto Release
run: npx cvlar -r
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
其中注释的 .mjs
文件,就像前面说的那样,commitlint
无法识别 mjs
,所以暂时只支持 cjs
和 js
格式的配置;
[
'/ks-cvlar.js',
'/ks-cvlar.conf.js',
'/ks-cvlar.config.js',
//'/ks-cvlar.mjs',
//'/ks-cvlar.conf.mjs',
//'/ks-cvlar.config.mjs',
'/ks-cvlar.cjs',
'/ks-cvlar.conf.cjs',
'/ks-cvlar.config.cjs',
'/ks-cvlarrc.js',
'/ks-cvlarrc.conf.js',
'/ks-cvlarrc.config.js',
//'/ks-cvlarrc.mjs',
//'/ks-cvlarrc.conf.mjs',
//'/ks-cvlarrc.config.mjs',
'/ks-cvlarrc.cjs',
'/ks-cvlarrc.conf.cjs',
'/ks-cvlarrc.config.cjs',
'ks-cvlar.js',
'ks-cvlar.conf.js',
'ks-cvlar.config.js',
//'ks-cvlar.mjs',
//'ks-cvlar.conf.mjs',
//'ks-cvlar.config.mjs',
'ks-cvlar.cjs',
'ks-cvlar.conf.cjs',
'ks-cvlar.config.cjs',
'ks-cvlarrc.js',
'ks-cvlarrc.conf.js',
'ks-cvlarrc.config.js',
//'ks-cvlarrc.mjs',
//'ks-cvlarrc.conf.mjs',
//'ks-cvlarrc.config.mjs',
'ks-cvlarrc.cjs',
'ks-cvlarrc.conf.cjs',
'ks-cvlarrc.config.cjs',
'.ks-cvlar.js',
'.ks-cvlar.conf.js',
'.ks-cvlar.config.js',
//'.ks-cvlar.mjs',
//'.ks-cvlar.conf.mjs',
//'.ks-cvlar.config.mjs',
'.ks-cvlar.cjs',
'.ks-cvlar.conf.cjs',
'.ks-cvlar.config.cjs',
'.ks-cvlarrc.js',
'.ks-cvlarrc.conf.js',
'.ks-cvlarrc.config.js',
//'.ks-cvlarrc.mjs',
//'.ks-cvlarrc.conf.mjs',
//'.ks-cvlarrc.config.mjs',
'.ks-cvlarrc.cjs',
'.ks-cvlarrc.conf.cjs',
'.ks-cvlarrc.config.cjs',
'config/ks-cvlar.js',
'config/ks-cvlar.conf.js',
'config/ks-cvlar.config.js',
//'config/ks-cvlar.mjs',
//'config/ks-cvlar.conf.mjs',
//'config/ks-cvlar.config.mjs',
'config/ks-cvlar.cjs',
'config/ks-cvlar.conf.cjs',
'config/ks-cvlar.config.cjs',
'config/ks-cvlarrc.js',
'config/ks-cvlarrc.conf.js',
'config/ks-cvlarrc.config.js',
//'config/ks-cvlarrc.mjs',
//'config/ks-cvlarrc.conf.mjs',
//'config/ks-cvlarrc.config.mjs',
'config/ks-cvlarrc.cjs',
'config/ks-cvlarrc.conf.cjs',
'config/ks-cvlarrc.config.cjs',
'.config/ks-cvlar.js',
'.config/ks-cvlar.conf.js',
'.config/ks-cvlar.config.js',
//'.config/ks-cvlar.mjs',
//'.config/ks-cvlar.conf.mjs',
//'.config/ks-cvlar.config.mjs',
'.config/ks-cvlar.cjs',
'.config/ks-cvlar.conf.cjs',
'.config/ks-cvlar.config.cjs',
'.config/ks-cvlarrc.js',
'.config/ks-cvlarrc.conf.js',
'.config/ks-cvlarrc.config.js',
//'.config/ks-cvlarrc.mjs',
//'.config/ks-cvlarrc.conf.mjs',
//'.config/ks-cvlarrc.config.mjs',
'.config/ks-cvlarrc.cjs',
'.config/ks-cvlarrc.conf.cjs',
'.config/ks-cvlarrc.config.cjs'
];
若您想将配置文件存放在其他位置,可以通过以下命令指定配置文件的所在目录,这样 cvlar
将会优先寻找 -[cd/config-dir]
指定的目录;
注意,是文件夹路径,不是文件路径!
cvlar -[cd/config-dir] xxx/xx/x
推荐在 package.json
中的 scripts
中配置;
{
"scripts": {
"cvlar": "cvlar -cd xxx/xx/x"
}
}
通过 cvlar -i/init
,生成对应配置文件,参考上方的 初始化 部分;
以下两个文件,均使用此命令生成的配置文件,分别是 中文 和 英文 两种语言的配置;
此文件 .commitlintrc.cjs 是 commitlint
的配置文件,用于 commitlint
的配置;
为了方便统一管理,所以独立出来了 ks-cvlar.types.cjs
和 ks-cvlar.scopes.cjs
两个文件,用于 commitlint
的 types
和 scopes
的配置,及 cvlar
的 commit
菜单的配置;
在 .commitlintrc.cjs 中,可以引入 ks-cvlar.types.cjs
和 ks-cvlar.scopes.cjs
两个文件,但由于 cvlar
的 commit
配置 和 commitlint
不同,所以您需要这样引入两个函数:
const { ConvertToLintTypes, ConvertToLintScopes } = require('@kwooshung/cvlar');
方便转换成 commitlint
的配置,具体使用方法,请参考 .commitlintrc.cjs;
若是开启了 commit message
的翻译功能,短说明一般是72个字符,则不建议 commitlint
的 header-max-length
规则不建议也是72个字符,因为 commit message
的翻译后,可能会超过72个字符,导致 commitlint
报错;
推荐将 commitlint
的 header-max-length
规则设置方案有3个:
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'header-max-length': [2, 'always', 200]
}
};
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
// 'header-max-length': [0, 'always', 72]
}
};
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'header-max-length': [0, 'always']
}
};
建议在 .gitigonre
中添加以下内容,以免将 cvlar
的临时文件提交到仓库中;
避免某些边缘情况下,误提交临时文件到仓库中,导致仓库中出现不必要的文件;
这种文件会在合适的时候,自动删除,所以不用担心;
这样做,是双保险!
.cvlar-commit-message-*.tmp
- 本项目主要是为了加速开发所生,每日开发时间较短,且时间比较紧簇,难免存在一些未知的问题,欢迎大家提出宝贵的意见和建议,请友好友善提交!
- 最近本人工作较赶,对于
issue
和pr
的处理可能会有些慢,还请大家见谅,但还是希望大家能够踊跃提交issue
和pr
,一旦有时间,将会集中处理! - 因为本人时间问题,更推荐大家进行
pr
,这样可以更快的解决问题!