- Do you use conventional commits in your daily workflow?
- Do you specify the scope(s) every time for the packages you're working on?
If so this project might save you some time. It provides you with a git prepare-commit-msg hook that figures out the automatable parts of the commit for you.
Download the prebuilt binary from the releases page
Then simply add the prepare-commit-msg binary to the repo git hooks and give it execute permissions.
$ cp ~/Downloads/prepare-commit-msg /your_monorepo/.git/hooks
$ chmod +x /your_monorepo/.git/hooks/prepare-commit-msg
Currently only macos is available from the releases page. For other platforms you could build from source using rust cargo.
- Running
git commitwill automatically runprepare-commit-msgfor you. The commit editor should look like this:
chore(app1):
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
...
The first line of the commit message will be pre-populated for you. You could at this point change the commit type and finish the rest of the commit message.
- You could also do
git commit -m "docs: my commit message".
In this case git doesn't invoke the editor, but the precommit hook will add for you the scope if there is one, so the resulting commit could be something like: docs(app1): my commit message
Any of the conventional commits types should work.
Other commit sources such as merge, squash and commit are ignored.
- Look at implementing support for other monorepos in https://github.com/korfuri/awesome-monorepo