Skip to content
🎉 Shareable commitlint config enforcing gitmoji commit
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.npmignore 🔧 Add some config Feb 18, 2018 ⬆️ Update the package version Jul 8, 2019
index.js ✏️ Fixing 📄 license typo Sep 7, 2019
package.json ⬆️ Update the package version Jul 8, 2019

Lint your gitmoji commits


English | 中文

Shareable commitlint config enforcing gitmoji. Use with @commitlint .



Getting started

1 - Install dependencies

# use npm
npm i -D commitlint-config-gitmoji @commitlint/core

# use yarn
yarn add -D commitlint-config-gitmoji @commitlint/core

2 - Add commitlint config for Gitmoji

echo "module.exports = {extends: ['./node_modules/commitlint-config-gitmoji']};" > commitlint.config.js



The following rules are considered problems for gitmoji commit and will yield a non-zero exit code when not met.

Consult docs/rules for a list of available rules.


  • condition: type is found in value
  • rule: always
  • value
echo ":abc: some message" # fails
echo ":bento: some message" # passes


  • description: type is in case value
  • rule: always
  • value
echo ":ART: Format some code" # fails
echo ":art: Format some code" # passes


  • condition: type is empty
  • rule: never
echo ": some message" # fails
echo ":fire: Delete some file" # passes


  • condition: scope is in case value
  • rule: always
echo ":art:(SCOPE) some message" # fails
echo ":art:(scope) some message" # passes


  • condition: subject must begin with ['sentence-case', 'start-case', 'pascal-case', 'upper-case']
  • rule: always
echo ":art:(scope) some Message" # Fails
echo ":art:(scope) Some message" # pass


  • condition: subject is empty
  • rule: never
echo ":art: " # fails
echo ":art: some message" # passes


  • condition: subject ends with value
  • rule: never
  • value
echo ":art: some message." # fails
echo ":art: some message" # passes


  • condition: header has value or less characters
  • rule: always
  • value
echo ":art: some message that is way too long and breaks the line max-length by several characters" # fails
echo ":art: some message" # passes


parserPreset: {
    parserOpts: {
      headerPattern: /^(:\w*:)(?:\((.*?)\))?\s((?:.*(?=\())|.*)(?:\(#(\d*)\))?/,
      headerCorrespondence: ['type', 'scope', 'subject', 'ticket'],

Gitmoji Reference Sheet

Emoji Raw Emoji Code Description
🎨 :art: when improving the format/structure of the code
📰 :newspaper: when creating a new file
📝 :pencil: when performing minor changes/fixing the code or language
📝 :memo: when documenting source code.
⚡️ :zap: when improving performance
📚 :books: when writing docs
🐛 :bug: when fixing a bug, with @FIXME Comment Tag
🚑 :ambulance: Critical hotfix.
🐧 :penguin: when fixing something on Linux
🍎 :apple: when fixing something on Mac OS
🏁 :checkered_flag: when fixing something on Windows
🤖 :robot: Fixing something on Android.
🍏 :green_ale: Fixing something on iOS.
🔥 :fire: when removing code or files, maybe with @CHANGED Comment Tag
🚜 :tractor: when change file structure. Usually together with 🎨
♻️ :recycle: when refactoring code
:white_check_mark: when adding tests
🔬 :microscope: when adding code coverage
💚 :green_heart: when fixing the CI build
🔒 :lock: when dealing with security
⬆️ :arrow_up: when upgrading dependencies
⬇️ :arrow_down: when downgrading dependencies
:fast_forward: when forward-porting features from an older version/branch
:rewind: when backporting features from a newer version/branch or Reverting changes.
🚨 :rotating_light: when removing linter/strict/deprecation warnings
💄 :lipstick: when improving UI/Cosmetic
♿️ :wheelchair: when improving accessibility
🌐 :globe_with_meridians: when dealing with globalization/internationalization/i18n/g11n
🚧 :construction: WIP(Work In Progress) Commits, maybe with @REVIEW Comment Tag
💎 :gem: New Release
🔖 :bookmark: Version Tags
🎉 :tada: Initial Commit
🔊 :loud_sound: when Adding Logs
🔇 :mute: when Reducing Logs
:sparkles: when introducing New Features
💬 :speech_balloon: When updating text and literals.
💡 :bulb: New Idea, with @IDEA Comment Tag
👷 :construction_worker: Adding CI build system.
📈 :chart_with_upwards_trend: Adding analytics or tracking code.
🎀 :ribbon: Customer requested application Customization, with @HACK Comment Tag
🚀 :rocket: Anything related to Deployments/DevOps
:heavy_minus_sign: Removing a dependency.
:heavy_plus_sign: Adding a dependency.
🔧 :wrench: Changing configuration files.
💩 :hankey: Writing bad code that needs to be improved.
🍃 :leaves: MongoDB Database specific (Migrations, Scripts, Extensions, ...)
🏦 :bank: Generic Database specific (Migrations, Scripts, Extensions, ...)
🐳 :whale: Docker Configuration
🔀 :twisted_rightwards_arrows: Merging branches.
📌 :pushpin: Pinning dependencies to specific versions.
👥 :busts_in_silhouette: Adding contributor(s).
🚸 :children_crossing: Improving user experience / usability.
🏗 :building_construction: Making architectural changes.
📱 :iphone: Working on responsive design.
🤡 :clown_face: Mocking things.
👌 :ok_hand: When updating code due to code review changes.
💥 :boom: Introducing breaking changes.
🍱 :bento: Adding or updating assets.
✏️ :pencil2: Fixing typos.
📦 :package: When updating compiled files or packages.
👽 :alien: Updating code due to external API changes.
🚚 :truck: Moving or renaming files.
📄 :age_facing_up: Adding or updating license.
🗃 :card_file_box: Performing database related changes.
🔊 :loud_sound: Adding logs.
🔇 :mute: Removing logs.
🥚 :egg: Adding an easter egg.
🙈 :see_no_evil: Adding or updating a .gitignore file
📸 :camera_flash: Adding or updating snapshots
:alembic: Experimenting new things
🔍 :mag: Improving SEO
☸️ :wheel_of_dharma: Work about Kubernetes
🏷️ :label: Adding or updating types (Flow, TypeScript)
You can’t perform that action at this time.