Skip to content

commitlint - Lint commit messages for Dart and Flutter projects

License

Notifications You must be signed in to change notification settings

hyiso/commitlint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

eaad24c · Nov 13, 2024
Aug 8, 2023
Mar 24, 2023
Mar 24, 2023
Sep 15, 2023
Apr 9, 2023
Nov 13, 2024
Nov 13, 2024
Mar 16, 2023
Mar 24, 2023
Nov 13, 2024
Mar 16, 2023
Jul 16, 2023
Mar 16, 2023
Nov 13, 2024

Repository files navigation

commitlint

Pub Version popularity likes CI

Dart version commitlint - A tool to lint commit messages. (Inspired by JavaScript commitlint)

commitlint lint commit messages to satisfy conventional commit format

commitlint helps your team adhere to a commit convention. By supporting pub-installed configurations it makes sharing of commit conventions easy.

About Package Name

Because a package commit_lint already exists (not in active development), the name commitlint can't be used according to Pub's naming policy. So commitlint_cli is used currently.

Getting started

Install

Add commitlint_cli to your dev_dependencies in pubspec.yaml

# Install commitlint_cli
dart pub add --dev commitlint_cli

Configuration

# Simply use configuration of a package
echo "include: package:commitlint_cli/commitlint.yaml" > commitlint.yaml

You can also customize your configuration in commitlint.yaml

# Inherit configuration of a package
include: package:commitlint_cli/commitlint.yaml

# Custom rules
rules:
  type-case:
    - 2
    - always
    - 'upper-case'

# Whether commitlint uses the default ignore rules.
defaultIgnores: true
# Pattern that matches commit message if commitlint should ignore the given message.
ignores:
  - r'^fixup'

Test

# Lint from stdin
echo 'foo: bar' | dart run commitlint_cli
⧗  input: type: add docs
✖  type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] type-enum

✖  found 1 errors, 0 warnings

Note: output on successful commit will be omitted, you can use the VERBOSE=true env to get positive output. (Functionality of verbose)

# Output on successful commit will be omitted
echo 'feat: test message' | dart run commitlint_cli
# Verbse Output on successful commit
echo 'feat: test message' | VERBOSE=true dart run commitlint_cli

Setup git hook

With husky (a tool for managing git hooks), commitlint cli can be used in commmit-msg git hook

Set commit-msg hook:

dart pub add --dev husky
dart run husky install
dart run husky set .husky/commit-msg 'dart run commitlint_cli --edit "$1"'

Make a commit:

git add .
git commit -m "Keep calm and commit"
# `dart run commitlint_cli --edit "$1"` will run

To get the most out of commitlint you'll want to automate it in your project lifecycle. See our Setup guide for next steps.

Documentation

See documention

  • Guides - Common use cases explained in a step-by-step pace
  • Concepts - Overarching topics important to understand the use of commitlint
  • Reference - Mostly technical documentation