All Projects → conventional-changelog → Commitlint

conventional-changelog / Commitlint

Licence: mit
📓 Lint commit messages

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Commitlint

Add And Commit
Add & commit files from a path directly from GitHub Actions
Stars: ✭ 198 (-97.99%)
Mutual labels:  lint, commit
Update
Update is a new developer framework and CLI for automating updates of any kind in code projects. If you know how to use assemble, generate or verb, you'll know how to use update.
Stars: ✭ 106 (-98.92%)
Mutual labels:  lint, conventions
Commit Message Lint
Github app to validate commit message on a pull request
Stars: ✭ 87 (-99.12%)
Mutual labels:  lint, conventions
git-commit-lint-vscode
vscode一款git 规范化提交插件
Stars: ✭ 33 (-99.66%)
Mutual labels:  lint, commit
Feflow
🚀 A command line tool aims to improve front-end engineer workflow and standard, powered by TypeScript.
Stars: ✭ 942 (-90.43%)
Mutual labels:  lint
Ethlint
(Formerly Solium) Code quality & Security Linter for Solidity
Stars: ✭ 698 (-92.91%)
Mutual labels:  lint
Lint Md
📚 检查中文 markdown 编写格式规范的命令行工具,基于 AST,方便集成 ci,写博客 / 文档必备。支持 API 调用!
Stars: ✭ 662 (-93.28%)
Mutual labels:  lint
Php Parallel Lint
This tool check syntax of PHP files faster than serial check with fancier output.
Stars: ✭ 646 (-93.44%)
Mutual labels:  lint
Swift Style Guide
Swift language style guide & coding conventions followed by Xmartlabs.
Stars: ✭ 36 (-99.63%)
Mutual labels:  conventions
Hint
重构到 ---> https://github.com/hustcc/lint-md
Stars: ✭ 30 (-99.7%)
Mutual labels:  lint
Life Commit
🏃📆 Life as a git. Commit on your life.
Stars: ✭ 919 (-90.67%)
Mutual labels:  commit
Remark Lint
Markdown code style linter
Stars: ✭ 718 (-92.71%)
Mutual labels:  lint
Go Critic
The most opinionated Go source code linter for code audit.
Stars: ✭ 875 (-91.11%)
Mutual labels:  conventions
Rust Clippy
A bunch of lints to catch common mistakes and improve your Rust code
Stars: ✭ 6,720 (-31.76%)
Mutual labels:  lint
Naming Convention
Templates for naming convention - TSQL, JavaScript, C#, R, Python, Powershell
Stars: ✭ 961 (-90.24%)
Mutual labels:  conventions
Phplint
🐛 A tool that can speed up linting of php files by running several lint processes at once.
Stars: ✭ 646 (-93.44%)
Mutual labels:  lint
Git Stack
Compare against master branch with fzf
Stars: ✭ 6 (-99.94%)
Mutual labels:  commit
Httpolice
Validator for HTTP
Stars: ✭ 948 (-90.37%)
Mutual labels:  lint
Cfn nag
Linting tool for CloudFormation templates
Stars: ✭ 808 (-91.79%)
Mutual labels:  lint
Ros best practices
Best practices, conventions, and tricks for ROS. Do you want to become a robotics master? Then consider graduating or working at the Robotics Systems Lab at ETH in Zürich!
Stars: ✭ 799 (-91.89%)
Mutual labels:  conventions

Get Started | Let's chat slack | Website

Lint commit messages

Demo generated with svg-term-cli

cat docs/assets/commitlint.json | svg-term --out docs/assets/commitlint.svg --frame --profile=Seti --height=20 --width=80

npm latest CircleCI

  • 🚓 Be a good commitizen
  • 📦 Share configuration via npm
  • 🤖 Tap into conventional-changelog

Contents


What is commitlint

commitlint checks if your commit messages meet the conventional commit format.

In general the pattern mostly looks like this:

type(scope?): subject  #scope is optional; multiple scopes are supported (current delimiter options: "/", "\" and ",")

Real world examples can look like this:

chore: run tests on travis ci
fix(server): send cors headers
feat(blog): add comment section

Common types according to commitlint-config-conventional (based on the Angular convention) can be:

  • build
  • chore
  • ci
  • docs
  • feat
  • fix
  • perf
  • refactor
  • revert
  • style
  • test

These can be modified by your own configuration.

Benefits using commitlint

Getting started

# Install commitlint cli and conventional config
npm install --save-dev @commitlint/{config-conventional,cli}
# For Windows:
npm install --save-dev @commitlint/config-conventional @commitlint/cli

# Configure commitlint to use conventional config
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

To lint commits before they are created you can use Husky's commit-msg hook:

# Install Husky v6
npm install husky --save-dev
# or
yarn add husky --dev

# Activate hooks
npx husky install
# or
yarn husky install

# Add hook
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
# Sometimes above command doesn't work in some command interpreters
# You can try other commands below to write npx --no -- commitlint --edit $1
# in the commit-msg file.
npx husky add .husky/commit-msg \"npx --no -- commitlint --edit '$1'\"
# or
npx husky add .husky/commit-msg "npx --no -- commitlint --edit $1"

# or
yarn husky add .husky/commit-msg 'yarn commitlint --edit $1'

Check the husky documentation on how you can automatically have Git hooks enabled after install for different yarn versions.

Detailed Setup instructions

CLI

  • Primary way to interact with commitlint.
  • npm install --save-dev @commitlint/cli
  • Packages: cli

Config

  • Configuration is picked up from:
    • .commitlintrc
    • .commitlintrc.json
    • .commitlintrc.yaml
    • .commitlintrc.yml
    • .commitlintrc.js
    • .commitlintrc.cjs
    • .commitlintrc.ts
    • commitlint.config.js
    • commitlint.config.cjs
    • commitlint.config.ts
    • commitlint field in package.json
  • Packages: cli, core
  • See Rules for a complete list of possible rules
  • An example configuration can be found at @commitlint/config-conventional

Shared configuration

A number of shared configurations are available to install and use with commitlint:

⚠️ If you want to publish your own shareable config then make sure it has a name aligning with the pattern commitlint-config-emoji-log or commitlint-config-your-config-name — then in extend all you have to write is emoji-log or your-config-name.

API

  • Alternative, programmatic way to interact with commitlint
  • Packages:
    • format - Format commitlint reports
    • lint - Lint a string against commitlint rules
    • load - Load shared commitlint configuration
    • read - Read commit messages from a specified range or last edit
  • See API for a complete list of methods and examples

Tools

Roadmap

Ideas: conventional-changelog/commitlint#94

commitlint is considered stable and is used in various projects as development tool.

We identify ease of adoption and developer experience as fields where there is room and need for improvement. The items on the roadmap should enhance commitlint regarding those aspects.

Version Support and Releases

  • Node.js LTS >= 12
  • git >= 2.13.2

Releases

Security patches will be applied to versions which are not yet EOL.
Features will only be applied to the current main version.

Release Inital release End-of-life
v15 17.11.2021 17.11.2022
v14 26.10.2021 26.10.2022
v13 24.05.2021 24.05.2022
v12 23.02.2021 23.02.2022
v11 13.09.2020 13.09.2020

Dates are subject to change.

We're not a sponsored OSS project. Therefor we can't promise that we will release patch versions for older releases in a timley manner.
If you are stuck on an older version and need a security patch we're happy if you can provide a PR.

Related projects

License

Copyright by @marionebl. All commitlint packages are released under the MIT license.

Development

commitlint is developed in a mono repository.

Install and run

git clone [email protected]:conventional-changelog/commitlint.git
cd commitlint
yarn
yarn run build # run build tasks
yarn start # run tests, again on change

For more information on how to contribute please take a look at our contribution guide.

Package dependency overview

commitlint-dependencies

(Partly outdated)

Publishing a release

Before publishing a release do a yarn run publish --dry-run to get the upcoming version and update the version in the should print help test.
Commit that change before creating the new version without --dry-run.

npm login
nvm use (if you have nvm installed)
yarn clean
yarn install
yarn build
yarn test
yarn run publish --otp <one-time password>

Create Github release

  1. Copy changelog entry for the new version
  2. Create release for the new tag: https://github.com/conventional-changelog/commitlint/releases
  3. Post in the commitlint Slack-channel

Publish a next release (or i.e. patch release)

npm login
nvm use (if you have nvm installed)
yarn clean
yarn install
yarn build
yarn test
npx lerna publish --conventional-commits --dist-tag [`next` | `[PATCH_RELEASE_VERSION]`] --otp <one-time password>

If for some reason this stops in between, you can manually publish missing packages like this:

npm publish <package-name> --tag [`next` | `[PATCH_RELEASE_VERSION]`] --otp <one-time password>
Move next to latest
npm login
npx lerna exec --no-bail --no-private --no-sort --stream -- '[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag add ${LERNA_PACKAGE_NAME}@$(npm v . dist-tags.next) latest --otp <one-time password>'

Remove next:

npx lerna exec --no-bail --no-private --no-sort --stream -- '[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag rm ${LERNA_PACKAGE_NAME} next --otp <one-time password>'
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].