Gitmoji 提交规范实践指南:用 Emoji 标准化 Git Commit Message 与 gitmojis 数据包
开发工具【免费下载链接】gitmojiAn emoji guide for your commit messages. 项目地址https://gitcode.com/gh_mirrors/gi/gitmoji点击查看免费下载Gitmoji 是一套旨在标准化并解释 GitHub 提交信息commit message中 Emoji 用法的社区约定通过为不同意图的提交分配含义明确的 Emoji让提交历史无需阅读正文即可一眼识别每次提交的目的。本文以本仓库根目录 README.md 为主线结合gitmojisnpm 数据包源码、JSON 数据与 JSON Schema系统讲解 Gitmoji 约定的提交格式、命令行客户端gitmoji-cli的安装使用、npm 数据包与 HTTP API 的消费方式以及数据校验与发布机制。读完本文你将能在自己的项目中落地一套可复制、可校验、可持续维护的 Emoji 提交规范。Gitmoji 是什么用 Emoji 表达提交意图在提交信息中使用 Emoji提供了一种仅凭看 Emoji 就能识别一次提交的目的或意图的简单方式。由于 Emoji 种类繁多容易各写各的因此 Gitmoji 倡议建立一份统一指南帮助大家更轻松、更一致地使用 Emoji。其核心理念可以概括为约定优于随意为「修 Bug」「加功能」「重构」「改文档」等高频场景固定对应的 Emoji可读性优先在历史记录、PR 列表、Git 工具界面中Emoji 比纯文字更快被眼球捕捉可编程化Emoji 数据以结构化 JSON 发布可供 CLI、CI 校验、编辑器插件等程序化消费。本仓库即 Gitmoji 约定的官方数据与网站实现gitmojis是发布到 npm 的数据包见 packages/gitmojis/package.json版本 3.15.0仓库还包含基于 Next.js 构建的展示网站packages/website。标准提交格式intention [scope?][:?] messageREADME 给出了一个可直接照搬进团队的提交格式模板intention [scope?][:?] message三个组成部分的含义占位符必填说明intention是来自 Gitmoji 列表中的一个 Emoji表达本次提交的意图scope否可选的字符串为变更范围补充上下文信息例如模块名、包名message是对本次变更的简短说明[:?]表示冒号为可选分隔符因此下面几种写法都是合法的git commit -m ✨ Add user profile page git commit -m (auth): Fix token refresh race condition git commit -m ♻️(core): Extract cache layer对照本仓库的权威数据源 packages/gitmojis/src/gitmojis.json共 64 条常见意图与 Emoji 的对应关系包括Improve structure / format of the code —— 改善代码结构或格式⚡️Improve performance —— 提升性能Remove code or files —— 删除代码或文件Fix a bug —— 修复 Bug✨Introduce new features —— 引入新功能Add or update documentation —— 新增或更新文档Introduce breaking changes —— 引入破坏性变更Deploy stuff —— 部署♻️Refactor code —— 重构Fix compiler / linter warnings —— 修复编译或 Lint 告警Add a failing test —— 添加失败用例TDD。使用命令行客户端 gitmoji-cli为了从命令行直接使用 Gitmoji官方提供了交互式客户端gitmoji-cli它可以帮你把 Emoji 选择、格式化提交信息的过程变成引导式交互。全局安装命令README 原文npm i -g gitmoji-cli安装后即可在终端中通过交互界面挑选 Emoji 并组合出符合intention [scope?][:?] message格式的提交信息避免手工记忆 Emoji 与意图的对应关系也减少输入错误。需要说明的是gitmoji-cli是独立于本仓库发布维护的配套项目其完整子命令与配置项以其自身文档为准。以 npm 包形式消费 Emoji 数据gitmojisGitmoji 约定中的全部 Emoji 已被打包成一个 Node 模块发布方便作为依赖引入到自己的工具链中。仓库内对应包的说明见 packages/gitmojis/README.md。安装npm i gitmojis基本用法ES Moduleimport { gitmojis } from gitmojis console.log(gitmojis)输出为对象数组每个元素形如[ { emoji: , entity: #x1f3a8;, code: :art:, description: Improve structure / format of the code., name: art, semver: null }, { emoji: ⚡️, entity: #x26a1;, code: :zap:, description: Improve performance., name: zap, semver: null }, // ... ]字段语义与 TypeScript 类型每个 Gitmoji 条目包含 6 个字段其类型定义见 packages/gitmojis/src/index.d.ts字段类型说明示例emojistringEmoji 的 Unicode 字符、⚡️entity#${string};十六进制或十进制的 HTML 实体#x1f3a8;、#128657;descriptionstring该 Emoji 的使用场景说明Improve structure / format of the code.namestring语义化名称kebab-caseart、white-check-marksemverpatch \| minor \| major \| null关联的语义化版本影响范围未指定时为nullpatch、minor、nullcode:${string}:以短码形式格式化的字符:art:、:zap:其中semver字段是 Gitmoji 与语义化版本SemVer打通的关键例如✨新功能标记为minor、破坏性变更标记为major而⚡️、、️等大量条目标记为patch部分条目录为null不涉及版本影响。从数据结构可以推断semver的设计意图是支持基于提交信息自动推断版本号变更级别的工具。包入口与模块格式gitmojis的入口实现见 packages/gitmojis/src/index.jsimport gitmojisJson from ./gitmojis.json assert { type: json } export { default as schema } from ./schema.json assert { type: json } export const gitmojis gitmojisJson.gitmojis也就是说包对外导出两个成员gitmojis直接取自gitmojis.json中的gitmojis数组schema对应的 JSON Schema可用于运行时校验数据合法性。在 packages/gitmojis/package.json 中包被声明为type: module并通过exports字段同时提供 ESM 与 CJS 两个入口dist/index.mjs/dist/index.cjstypes指向dist/index.d.ts因此支持import与require两种引入方式并天然带 TypeScript 类型提示。构建工具链采用unbuildbuild: unbuild开发时用nodemon监听src目录自动重建。数据合法性的双重保障Gitmoji 数据不是手写即完事而是有 schema 约束与自动化校验JSON Schema见 packages/gitmojis/src/schema.json采用 JSON Schema draft 2020-12。它要求顶层对象必须有gitmojis数组且每个条目必须包含emoji、entity、code、description、name、semver六个字段其中semver只能是major、minor、patch或null数组本身还要求minItems: 1与uniqueItems: true从结构上保证列表非空且不重复。CI 校验脚本package.json中提供了lint:json与lint命令用ajv-cli依据 schema 校验数据文件# 校验 gitmojis.json 是否符合 schema.json pnpm run lint:json # 在 JSON 校验基础上再执行 prettier 格式检查 pnpm run lint这意味着任何新增或修改的 Emoji 条目都必须同时通过 schema 语义校验与 prettier 格式检查才能合入。通过 HTTP API 消费curl 一行获取如果你不希望以 npm 依赖的方式引入也可以直接通过 HTTP API 消费同一份数据README 原文curl https://gitmoji.dev/api/gitmojis该接口返回与 npm 包一致的{ gitmojis: [...] }JSON 结构。从仓库实现看网站侧通过 packages/website/scripts/generate-api.js 在构建期静态生成该 API 的 JSON 文件const { gitmojis } require(gitmojis) const fs require(fs) const path require(path) const outputDir path.join(__dirname, ../public/api/gitmojis) fs.mkdirSync(outputDir, { recursive: true }) fs.writeFileSync( path.join(outputDir, index.json), JSON.stringify({ gitmojis }, null, 2) )即构建时从gitmojis包读取数据落盘到public/api/gitmojis/index.json由静态站点托管。这样 API 与 npm 包共享同一数据源保证多入口消费的一致性。此外数据文件中还声明了$schema: https://gitmoji.dev/api/gitmojis/schema让编辑器也可以直接按 schema 校验该 JSON。在网站中集成Gitmoji 展示与搜索本仓库的网站包packages/website围绕这份 JSON 数据构建了完整的展示与搜索体验GitmojiList组件packages/website/src/components/GitmojiList/index.tsx负责渲染全部 Gitmoji 列表emojiColorsMap.tspackages/website/src/components/GitmojiList/emojiColorsMap.ts为不同 Emoji 提供展示色SearchParamsSync.tsxpackages/website/src/components/GitmojiList/SearchParamsSync.tsx将搜索/过滤条件同步到 URL 查询参数便于分享与书签配套的单元测试覆盖了列表渲染与交互逻辑如 packages/website/src/components/GitmojiList/tests/gitmojiList.spec.tsx。如果你要在自己的项目里做类似的 Emoji 展示页可以直接以gitmojis包的gitmojis数组为数据源配合description做搜索匹配、用code显示短码、用semver做版本影响标识。仓库工程结构速览本仓库采用 pnpm Turbo 的 monorepo 组织方式见 package.json、pnpm-workspace.yaml 与 turbo.json包含两个工作区包packages/gitmojis数据包本体产出gitmojis与schema两个导出packages/websiteNext.js 展示网站含页面、组件、测试与静态 API 生成脚本。根目录package.json要求 Node 22 与 pnpm 8并提供dev: pnpm turbo --parallel dev一键并行启动所有包的开发模式。数据从 packages/gitmojis/src/gitmojis.json 单一事实源流出npm 包、HTTP API、网站展示三条消费链路共用这一份数据这是整个项目保持「一处维护、处处一致」的关键设计。为项目添加 Gitmoji 徽章如果你正在自己的项目中使用 GitmojiREADME 提供了官方的徽章代码可以直接放在自己项目的 README 顶部徽章指向 gitmoji 官网a hrefhttps://gitmoji.dev img srchttps://img.shields.io/badge/gitmoji-%20%20-FFDD67.svg?styleflat-square altGitmoji / /a该徽章使用 shields.io 动态生成向读者传达「本项目遵循 Gitmoji 提交约定」这一信息。贡献与许可Gitmoji 欢迎社区参与贡献指南、新增 Emoji 的流程先开 issue 讨论、再提交 Pull Request 并附带数据更新都定义在仓库的.github/CONTRIBUTING.md中新增 Emoji 时必须同时更新 packages/gitmojis/src/gitmojis.json并通过pnpm run lint的 schema 与格式校验。仓库代码以 MIT 协议开源发布。小结围绕一份结构化 JSON 数据Gitmoji 生态打通了「约定 → 数据 → 工具 → 消费」的完整链路intention [scope?][:?] message提供了统一的提交书写范式gitmoji-cli解决了命令行下的交互式使用gitmojisnpm 包与https://gitmoji.dev/api/gitmojisHTTP API 让任何语言、任何工具都能以结构化方式消费全部 Emoji 元数据JSON Schema 与 ajv 校验保证了数据在合入前始终合法。无论你是想在团队内推行统一的提交规范还是想基于 Emoji 数据构建自己的提交辅助或分析工具都可以直接从本仓库的 gitmojis.json 与 schema.json 出发快速落地。赞分享开发工具【免费下载链接】gitmojiAn emoji guide for your commit messages. 项目地址https://gitcode.com/gh_mirrors/gi/gitmoji点击查看免费下载相关推荐Penpot 仓库 Git 提交规范全解Commit Message 格式、emoji 类型与 AI 辅助署名指南Penpot 仓库 Git 提交规范全解Commit Message 格式、emoji 类型与 AI 辅助署名指南 导读本文以 Penpot 开源仓库的贡献前端设计系统图形学协同办公Lean 4 仓库 Git 提交规范从 Commit Message 到自动化 Changelog 的工程实践Lean 4 仓库 Git 提交规范从 Commit Message 到自动化 Changelog 的工程实践 Lean 4 leanprover/lean编程语言编译器形式化验证语言运行时标准库oh-my-posh 提交规范实战基于 Conventional Commits 生成标准化的 commit messageoh my posh 提交规范实战基于 Conventional Commits 生成标准化的 commit message 本指南以 oh my poshCLI开发工具上一篇彻底解决Vue3-Excel-Editor排序功能异常深度剖析与根治方案下一篇终极指南如何使用tc-lib-pdf实现交互式PDF文档的JavaScript集成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考