@ballcat/commit-config-gitmoji
English | 中文
Shareable commitlint
config enforcing gitmoji.
Use with @commitlint/cli and @commitlint/prompt-cli.
Getting started
install commitlint and commit-config-gitmoji
# For Windows:
npm install --save-dev @ballcat/commitlint-config-gitmoji @commitlint/cli
# Configure commitlint to use conventional config
echo "module.exports = {extends: ['./node_modules/@ballcat/commitlint-config-gitmoji']}" > commitlint.config.js
To lint commits before they are created you can use Husky's commit-msg
hook:
install husky v8
npx husky-init && npm install # npm
npx husky-init && yarn # Yarn 1
yarn dlx husky-init --yarn2 && yarn # Yarn 2+
pnpm dlx husky-init && pnpm install # pnpm
add hook
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
Commit Message Format
<type> [scope] <subject>
[body]
[footer]
-
type
(required): An emoji from the list. -
scope
(optional): A string wrapped in parentheses that adds contextual information for the scope of the change. -
subject
(required): A brief explanation of the change. -
body
(required): Detailed description of the change. -
footer
(required): Links and operation issues or PR, eg.Closes #392
Rules
Problems
The following rules are considered problems for @ballcat/commit-config-gitmoji
and will yield a non-zero exit code when not met.
Consult docs/rules for a list of available rules.
type-enum
-
condition:
type
is found in value -
rule:
always
-
level:
error
- value: emoji code list, see gitmoji list
echo ":no: some message" # fails
echo ":bug: some message" # passes
type-case
-
description:
type
is in casevalue
-
rule:
always
-
level:
error
-
value
'lowerCase'
echo ":BUG: some message" # fails
echo ":bug: some message" # passes
type-empty
-
condition:
type
is empty -
rule:
never
-
level:
error
echo "some message" # fails
echo ":bug: some message" # passes
subject-case
-
condition:
subject
is in one of the cases['sentence-case', 'start-case', 'pascal-case', 'upper-case']
-
rule:
always
-
level:
error
echo ":bug: Some message" # fails
echo ":bug: Some Message" # fails
echo ":bug: SomeMessage" # fails
echo ":bug: SOMEMESSAGE" # fails
echo ":bug: some message" # passes
echo ":bug: some Message" # passes
subject-empty
-
condition:
subject
is empty -
rule:
never
-
level:
error
echo ":bug:" # fails
echo ":bug: some message" # passes
subject-full-stop
-
condition:
subject
ends withvalue
-
rule:
never
-
level:
error
- value
'.'
echo ":bug: some message." # fails
echo ":bug: some message" # passes
header-max-length
-
condition:
header
hasvalue
or less characters -
rule:
always
-
level:
error
- value
72
echo ":bug: some message that is way too long and breaks the line max-length by several characters" # fails
echo ":bug: some message" # passes
footer-leading-blank
-
condition:
footer
should have a leading blank line -
rule:
always
- level:
error
echo ":bug: some message
BREAKING CHANGE: It will be significant" # error
echo ":bug: some message
BREAKING CHANGE: It will be significant" # passes
body-leading-blank
-
condition:
body
should have a leading blank line -
rule:
always
- level:
error
echo ":bug: some message
body" # error
echo ":bug: some message
body" # passes
Gitmoji List
see gitmojis.json or gitmoji.dev
Emoji | Emoji code | Description |
---|---|---|
:art: |
Improve structure / format of the code. | |
:zap: |
Improve performance. | |
:fire: |
Remove code or files. | |
:bug: |
Fix a bug. | |
:ambulance: |
Critical hotfix. | |
:sparkles: |
Introduce new features. | |
:memo: |
Add or update documentation. | |
:rocket: |
Deploy stuff. | |
:lipstick: |
Add or update the UI and style files. | |
:tada: |
Begin a project. | |
:white_check_mark: |
Add, update, or pass tests. | |
:lock: |
Fix security issues. | |
:closed_lock_with_key: |
Add or update secrets. | |
:bookmark: |
Release / Version tags. | |
:rotating_light: |
Fix compiler / linter warnings. | |
:construction: |
Work in progress. | |
:green_heart: |
Fix CI Build. | |
:arrow_down: |
Downgrade dependencies. | |
:arrow_up: |
Upgrade dependencies. | |
:pushpin: |
Pin dependencies to specific versions. | |
:construction_worker: |
Add or update CI build system. | |
:chart_with_upwards_trend: |
Add or update analytics or track code. | |
:recycle: |
Refactor code. | |
:heavy_plus_sign: |
Add a dependency. | |
:heavy_minus_sign: |
Remove a dependency. | |
:wrench: |
Add or update configuration files. | |
:hammer: |
Add or update development scripts. | |
:globe_with_meridians: |
Internationalization and localization. | |
:pencil2: |
Fix typos. | |
:poop: |
Write bad code that needs to be improved. | |
:rewind: |
Revert changes. | |
:twisted_rightwards_arrows: |
Merge branches. | |
:package: |
Add or update compiled files or packages. | |
:alien: |
Update code due to external API changes. | |
:truck: |
Move or rename resources (e.g.: files, paths, routes). | |
:page_facing_up: |
Add or update license. | |
:boom: |
Introduce breaking changes. | |
:bento: |
Add or update assets. | |
:wheelchair: |
Improve accessibility. | |
:bulb: |
Add or update comments in source code. | |
:beers: |
Write code drunkenly. | |
:speech_balloon: |
Add or update text and literals. | |
:card_file_box: |
Perform database related changes. | |
:loud_sound: |
Add or update logs. | |
:mute: |
Remove logs. | |
:busts_in_silhouette: |
Add or update contributor(s). | |
:children_crossing: |
Improve user experience / usability. | |
:building_construction: |
Make architectural changes. | |
:iphone: |
Work on responsive design. | |
:clown_face: |
Mock things. | |
:egg: |
Add or update an easter egg. | |
:see_no_evil: |
Add or update a .gitignore file. | |
:camera_flash: |
Add or update snapshots. | |
:alembic: |
Perform experiments. | |
:mag: |
Improve SEO. | |
:label: |
Add or update types. | |
:seedling: |
Add or update seed files. | |
:triangular_flag_on_post: |
Add, update, or remove feature flags. | |
:goal_net: |
Catch errors. | |
:dizzy: |
Add or update animations and transitions. | |
:wastebasket: |
Deprecate code that needs to be cleaned up. | |
:passport_control: |
Work on code related to authorization, roles and permissions. | |
:adhesive_bandage: |
Simple fix for a non-critical issue. | |
:monocle_face: |
Data exploration/inspection. | |
:coffin: |
Remove dead code. | |
:test_tube: |
Add a failing test. | |
:necktie: |
Add or update business logic | |
:stethoscope: |
Add or update healthcheck. | |
:bricks: |
Infrastructure related changes. | |
:technologist: |
Improve developer experience | |
:money_with_wings: |
Add sponsorships or money related infrastructure. | |
:thread: |
Add or update code related to multithreading or concurrency. |