@ruan-cat/commitlint-config
TypeScript icon, indicating that this package has built-in type declarations

1.3.1 • Public • Published

commitlint.config.cjs 配置

阮喵喵自用的 commitlint.config.cjs 的配置,是一个 cjs 的包。

功能

  • 根据 pnpm-workspace.yaml 自动识别 monorepo 项目内的全部包。如果根目录不存在 pnpm-workspace.yaml 文件,则不会扫描整个工作区。
  • 用户可以自定义提交域。

安装

pnpm i -D commitizen cz-git @ruan-cat/commitlint-config

本库应当作为开发环境依赖。其中,commitizen 和 cz-git 为本依赖包的对等依赖。

使用方式

最简使用

直接导入默认的配置即可。

// commitlint.config.cjs
// @ts-check
module.exports = require("@ruan-cat/commitlint-config").default;

可拓展配置

可以使用 getUserConfig 函数来拓展配置。

// commitlint.config.cjs
// @ts-check
module.exports = require("@ruan-cat/commitlint-config").getUserConfig({
	config: {
		// 推荐不打印提交范围
		isPrintScopes: false,
	},
});

类型标注

可以使用 ScopesItemWithDesc 类型来标注配置数组。

// commitlint.config.cjs
// @ts-check
/**
 * @type { import("@ruan-cat/commitlint-config").ScopesItemWithDesc[] }
 */
const userScopes = [
	{ code: "process", value: "流程应用管理", desc: "流程应用管理" },
	{ code: "personal", value: "个人设置", desc: "个人设置" },
];
module.exports = require("@ruan-cat/commitlint-config").getUserConfig({
	userScopes,
	config: {
		isPrintScopes: false,
	},
});

类似功能的依赖包

被封装的配置文件

如下所示:

被封装的配置文件
import { type UserConfig } from "cz-git";

/**
 * @description
 * 这个配置文件不能使用ts格式 ts不被支持
 *
 * 该配置没有 scopes 范围
 *
 * @see https://cz-git.qbb.sh/zh/config/#中英文对照模板
 * @see https://cz-git.qbb.sh/zh/recipes/#
 */
export const config: UserConfig = {
	rules: {
		// @see: https://commitlint.js.org/#/reference-rules
	},
	prompt: {
		alias: { fd: "docs: fix typos" },

		messages: {
			type: "选择你要提交的类型 :",
			scope: "选择一个提交范围(可选):",
			customScope: "请输入自定义的提交范围 :",
			subject: "填写简短精炼的变更描述 :\n",
			body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n',
			breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n',
			footerPrefixesSelect: "选择关联issue前缀(可选):",
			customFooterPrefix: "输入自定义issue前缀 :",
			footer: "列举关联issue (可选) 例如: #31, #I3244 :\n",
			confirmCommit: "是否提交或修改commit ?",
		},

		/**
		 * 基于monorepo内项目,决定提交范围域
		 *
		 * 该配置可以用 getUserConfig 函数设置
		 */
		// scopes,

		// https://cz-git.qbb.sh/zh/recipes/#多选模式
		enableMultipleScopes: true,
		scopeEnumSeparator: ",",

		allowCustomScopes: true,
		allowEmptyScopes: true,
		customScopesAlign: "bottom",
		customScopesAlias: "custom",
		emptyScopesAlias: "empty",

		types: [
			{ value: "✨ feat", name: "✨ feat:     新增功能 | A new feature" },
			{ value: "🐞 fix", name: "🐞 fix:      修复缺陷 | A bug fix" },
			{ value: "📃 docs", name: "📃 docs:     文档更新 | Documentation only changes" },
			{ value: "🧪 test", name: "🧪 test:     测试相关 | Adding missing tests or correcting existing tests" },
			{
				value: "🔧 build",
				name: "🔧 build:    构建相关 | Changes that affect the build system or external dependencies",
			},
			{ value: "🐎 ci", name: "🐎 ci:       持续集成 | Changes to our CI configuration files and scripts" },
			{ value: "📢 publish", name: "📢 publish:  发包 | 依赖包发布版本。" },
			{
				value: "🦄 refactor",
				name: "🦄 refactor: 代码重构 | A code change that neither fixes a bug nor adds a feature",
			},
			{ value: "🎈 perf", name: "🎈 perf:     性能提升 | A code change that improves performance" },
			{ value: "🎉 init", name: "🎉 init:     初始化 | 项目初始化。" },
			{ value: "⚙️ config", name: "⚙️ config:    更新配置 | 配置更新。通用性的配置更新。" },

			{ value: "🐳 chore", name: "🐳 chore:    其他修改 | Other changes that do not modify src or test files" },
			{ value: "↩ revert", name: "↩ revert:   回退代码 | Revert to a commit" },
			{ value: "🗑 del", name: "🗑 del:    删除垃圾 | 删除无意义的东西,注释,文件,代码段等。" },
			{ value: "🌐 i18n", name: "🌐 i18n:    国际化 | 专门设置国际化的翻译文本。" },
			{ value: "🌈 style", name: "🌈 style:    代码格式 | Changes that do not affect the meaning of the code" },
			{
				value: "🤔 save-file",
				name: "🤔 save-file:    保存文件 | 文件保存类型。仅仅是为了保存文件。有时候会需要紧急提交,并快速切换分支。此时就需要提交代码。并保存文件。",
			},
			{ value: "✋ main-pull-update", name: "✋ main-pull-update:    主分支拉取更新 | 主分支拉取更新。" },
			{ value: "⏩ mark-progress", name: "⏩ mark-progress:    标记进度 | 标记进度。" },
		],
		useEmoji: true,
		emojiAlign: "center",
		useAI: false,
		aiNumber: 1,
		themeColorCode: "",

		upperCaseSubject: false,
		/** 允许使用破坏性变更的标记 */
		markBreakingChangeMode: true,
		allowBreakingChanges: ["feat", "fix"],
		breaklineNumber: 100,
		breaklineChar: "|",
		skipQuestions: [],
		issuePrefixes: [
			// 如果使用 gitee 作为开发管理
			{ value: "link", name: "link:     链接 ISSUES 进行中" },
			{ value: "closed", name: "closed:   标记 ISSUES 已完成" },
		],
		customIssuePrefixAlign: "top",
		emptyIssuePrefixAlias: "skip",
		customIssuePrefixAlias: "custom",
		allowCustomIssuePrefix: true,
		allowEmptyIssuePrefix: true,
		confirmColorize: true,
		scopeOverrides: undefined,
		defaultBody: "",
		defaultIssues: "",
		defaultScope: "",
		defaultSubject: "",
	},
};

其他参考

本包经常用于给阮喵喵维护的项目初始化简单的 cz 配置,这里提供阮喵喵常用的cz配置笔记,便于阅读。

路线图

TODO: 做一个自动识别 git 提交区文件的工具,识别文件的修改范围,而不是自己选择范围。每当 git add . 之后,就用 glob 库自主识别这些文件所属的提交区范围。然后至顶区提供已经索引好的,字母排序的提交区范围。

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.3.195latest

Version History

VersionDownloads (Last 7 Days)Published
1.3.195
1.3.034
1.2.09
1.1.47
1.1.36
1.1.23
1.1.11
1.1.01
1.0.80
1.0.70
1.0.60
1.0.51
1.0.41
1.0.31
1.0.21
1.0.11
1.0.02
0.2.111
0.2.102
0.2.91
0.2.81
0.2.71
0.2.61
0.2.31
0.2.02
0.1.43
0.1.32
0.1.21
0.1.11
0.1.01
0.0.12
0.0.01

Package Sidebar

Install

npm i @ruan-cat/commitlint-config

Weekly Downloads

182

Version

1.3.1

License

MIT

Unpacked Size

25.3 kB

Total Files

5

Last publish

Collaborators

  • ruan-cat-npm