Skip to content

Conventional Commits

Using the Conventional Commits specification

Format of the commit message

<type>(optional scope): description

optional body

optional footer(s)

Add either a ! before the : or a footer BREAKING CHANGE: to trigger a major version bump.

Types

build
Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
ci
Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
chore
Other changes that don't modify src or test files
docs
Documentation only changes
feat
A new feature
fix
A bug fix
perf
A code change that improves performance
refactor
A code change that neither fixes a bug nor adds a feature
revert
Reverts a previous commit
style
Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
test
Adding missing tests or correcting existing tests

Components

Tools used as part of this approach.

Commitlint

Commitlint is a tool to check commit messages for "conventional commit" formattting.

Standard-version

Standard-version is a utility to generate a release on a branch.

It will create/update a CHANGELOG.md file, and list notable commits from the git history.

Note

The utility only runs on the local repository, so nothing is pushed, no PRs are created or merged.

To further automate, release-please or semantic-release may be next steps.

standard-version
standard-version  --release-as 2..1.0
standard-version  --prerelease
standard-version  --prerelease alpha

Links to commit hashes on Github will be generated for the remote named origin.

Note

Link generation only works in the main checked out folder for a repository.

It does not work in a checked out worktree folder.

Warning

When running standard-release -f for a first release, it will not do version bumping. Update for instance the version in docs/antora.yml and stage it in git index before releasing.

Local configuration

  • Added command git-commitlint and git-standard-version in ~/bin with default behaviour, also available as git subcommands.

  • Added aliases git cl and git rel.

  • Added a pre-push script under ~/.config/git/hooks. Set the hooksPath for a local repository to use these standard scripts.

git config core.hooksPath /home/rolf/.config/git/hooks