git提交信息也能自动格式化了?committier快速体验

git提交信息也能自动格式化了?committier快速体验

作为开发者,你是不是也有过这些提交代码的烦恼:手动写的Git提交信息格式混乱,团队协作时难以追溯变更;牢记Conventional Commits规范却总在细节上出错;用commitlint校验出问题还要手动修改提交消息;想要添加emoji却发现cz太难配合commitlint了?

最近发现了一款宝藏工具committier,它能直接实现Git提交信息的自动格式化,无需配置就能贴合规范。今天就带大家5分钟快速体验这款工具,彻底告别提交信息的"格式焦虑"。

Github仓库

文档主页

一、committier是什么?

committier是一款专注于Git提交消息"格式化与修复"的工具,和commitlint的"规则校验"定位不同,它更像提交消息领域的Prettier------不强制约束规则,而是自动优化格式、补充关键信息。

它默认遵循Conventional Commits规范,能智能推断提交类型、作用域,还能自动添加emoji,同时可以和commitlint无缝兼容,形成"格式化+校验"的完整链路,兼顾效率与规范。

据说AI生成提交信息的功能正在开发中,能利用Github Models免费使用,也能接入其他各家AI。

快速安装

committier支持多种安装方式,这里推荐项目级局部安装,适配团队协作场景,步骤超简单:

  1. 进入项目根目录,安装开发依赖
bash 复制代码
# 按需选择包管理器,这里以pnpm为例
pnpm add committier -D
  1. (可选)配置快捷脚本 在package.json中添加提交快捷命令,后续可一键启动交互式提交:
json 复制代码
{
  "scripts": {
    "commit": "committier commit"
  }
}

如果只是想临时体验,甚至不用安装,直接通过npx调用:

bash 复制代码
npx committier <指令>

核心功能快速体验

体验1:提交时自动格式化

这是committier的核心能力,要实现"提交即格式化",需借助husky配置Git钩子,步骤如下:

  1. 安装husky并初始化
bash 复制代码
pnpm add husky -D
pnpm husky init
  1. 配置commit-msg钩子 编辑项目根目录的.husky/commit-msg文件,添加committier的格式化指令(若有commitlint,需放在其前面):
bash 复制代码
npx --no -- committier edit $1
# 若有commitlint,保留下方指令,无则可省略
# npx --no -- commitlint --edit $1

配置完成后,咱们来实测效果: 执行常规的提交命令,故意写一个不规范的提交消息:

bash 复制代码
git add .
git commit -m "   FeAT add user login button"

原本松散的消息,会被committier自动格式化为:

bash 复制代码
✨ feat: add user login button

不仅补全了规范格式,还自动加上了功能类型对应的emoji,效果立竿见影!

体验2:交互式提交CLI

如果不想手动写提交消息,committier内置的交互式CLI能帮你"傻瓜式"生成规范消息,直接执行咱们之前配置的脚本:

bash 复制代码
pnpm commit

随后会进入问答式流程,只需按提示选择提交类型、填写变更描述,工具就会自动生成符合规范的提交消息:

若想测试流程不实际提交代码,可开启dry-run模式:

bash 复制代码
pnpm commit --dry-run

体验3:完美配合commitlint

如果你的项目已接入commitlint,只需额外配置一个emoji解析器,就能让两者完美兼容:

  1. commitlint.config.js中引入committier的解析器:
javascript 复制代码
import { commitlintEmojiParser } from "committier/commitlint-emoji-parser";
export default {
  extends: ["@commitlint/config-conventional"],
  parserPreset: commitlintEmojiParser,
};
  1. 确保钩子执行顺序为committier在前、commitlint在后,即可先格式化再校验,既保格式又守规则。

深度解析:committier的格式化核心能力

committier的格式化并非简单的"补个符号",而是围绕Conventional Commits规范的全维度自动优化,覆盖提交消息的各个组成部分,且全程无需手动干预。

1. 基础格式自动规整:从"杂乱"到"标准"

committier会自动将任意松散的提交消息,规整为[emoji] type(scope)!: description的标准格式,核心处理包括:

  • 符号与空格标准化:自动补全类型(type)与描述(description)之间的冒号+空格,清理多余的换行、空格;
  • 大小写与标点优化:默认将描述首字母转为小写(符合Conventional Commits规范),自动移除描述末尾的多余标点;
  • 破坏性变更标记处理:若提交消息中包含"BREAKING CHANGE"或手动标注"!",会自动将"!"放在type/scope后,符合规范要求。

示例对比: 手动提交的不规范消息:

bash 复制代码
git commit -m "FEAT  add user login function!!  "

经committier格式化后:

bash 复制代码
✨ feat: add user login function

若包含破坏性变更: 手动提交:git commit -m "fix auth BREAKING CHANGE: token验证逻辑修改" 格式化后:🐛 fix(auth)!: token验证逻辑修改

2. 智能信息补全:无需手动指定type/scope

committier能基于代码变更内容或项目结构,自动推断关键信息,进一步降低手动编写成本:

  • 提交类型(type)自动推断:若未指定type,工具会根据变更文件类型/内容(如新增文件→feat、修复bug→fix、配置变更→chore)自动匹配默认type;
  • 作用域(scope)自动提取 :开启autoScope配置后,可从monorepo工作区包名(如packages/button→button)、变更文件所属目录(如src/components/table→table)自动提取scope;
  • 空值自动补全:若提交消息仅写了核心描述(如"修改登录逻辑"),会自动补全默认type(如fix),避免消息缺失关键维度。

示例 : 开启autoScope: "replaceToPackageName"后,在monorepo的packages/button目录提交:

bash 复制代码
git commit -m "优化按钮样式"

格式化后:

bash 复制代码
🐛 fix(button): 优化按钮样式

3. 正文与脚注格式化:保持结构整洁

除了提交标题(subject),committier还会优化提交消息的正文(body)和脚注(footer):

  • 自动为正文/脚注补充空行分隔,符合"标题空一行+正文+空一行+脚注"的规范结构;
  • 清理正文/脚注中的多余缩进、重复换行;
  • 保留脚注中的关键标记(如Closes #123BREAKING CHANGE:),确保关联issue、变更说明不丢失。

自定义配置

如果默认的emoji或提交类型不符合团队习惯,可快速修改配置。在项目根目录新建committier.config.js,示例如下:

javascript 复制代码
import { defineConfig } from "committier";

export default defineConfig({
  // 关闭自动emoji(默认开启)
  autoEmoji: false,
  // 自动从工作区包名推断作用域
  autoScope: "replaceToPackageName",
  // 修改默认提交类型为feat
  defaultType: "feat"
  // 开启自动生成默认描述信息来兜底
  defaultDescription: true
});

committier支持多种格式的配置文件,哪怕只改个别字段,也能轻松覆盖默认行为。

体验总结

committier最打动我的点,在于零配置起步+无感格式化 5分钟就能完成接入,提交代码时无需额外操作,就能自动生成规范的提交消息,既降低了团队规范落地的门槛,又节省了手动调整格式的时间。

不管是个人小项目还是多人协作的大型项目,这款工具都能显著提升提交信息的质量和开发效率,还没试过的朋友不妨赶紧体验一波!

相关推荐
小高0072 小时前
React 避坑指南:彻底搞定不必要的重新渲染
前端·javascript·react.js
浩浩酱2 小时前
【TS】any的问题及与unknown的区别
前端·typescript
San30.2 小时前
从原型链到“圣杯模式”:JavaScript 继承方案的演进与终极解法
开发语言·javascript·原型模式
dagouaofei2 小时前
手术室护理年终PPT怎么做?
前端·python·html·powerpoint
技术爬爬虾2 小时前
为什么React的漏洞能攻破服务器?Next.js与RSC入门基础
前端·数据库·安全
JS_GGbond2 小时前
浏览器三大核心API:LocalStorage、Fetch API、History API详解
前端·javascript
老前端的功夫2 小时前
首屏优化深度解析:从加载性能到用户体验的全面优化
前端·javascript·vue.js·架构·前端框架·ux
申阳2 小时前
Day 22:SpringBoot4 + Tauri 2.0(VUE) 登录功能前后端联调
前端·后端·程序员
晴殇i2 小时前
性能飞跃!这几个现代浏览器API让页面加载速度提升至90+
前端·javascript·面试