🥳️ git(moji)-cz => @owngames/git-cz
🍴️ Why this Fork
npm i -g git-cz
added 1 package in 0.612s
Installs in 0.6s vs 31.1s.
🍽️ But Why this Fork
I needed to customize some things, and seemed like the intent was breaking away from streamich/git-cz
.
- [x] Package Upgrades
- [x] Node14 Support
- [x] Subject Customization
- [x] Theming: Gitmoji
✨️ (new default)- Semantic Versioning Requirements for CI/CD
- [x] Gitflow Brancing
- CLI Customizations
- [x] Codestyle Preference
- Getting there
- [ ] TypeScript Migration
- Eventually getting there
@owngames/git-cz-v7.0.0
is the main breaking off point
🔧️ Custom config
You can provide a custom configuration in a changelog.config.js
file in your repo, or in any parent folder.
git-cz will search for the closest config file.
🚧️ Non-interactive mode
Using --non-interactive
flag you can run git-cz
non-interactive mode.
For example:
git-cz --non-interactive --type=feat --subject="add onClick prop to component"
CLI parameters:
--body
--breaking
--issues
--lerna
--scope
--subject
--type
Commit
Subject via Format
By default the subject format is: {emoji} {scope} {branchName}{subject}
--format "{emoji} {scope} {branchName}{subject}"
{
"commit": {
"format": "{emoji} {scope} {branchName}{subject}"
}
}
You can configure your own using the following fields:
{branchName}
{emoji}
{scope}
{subject}
{type}
These are the only fields that will be dynamically replaced by @owngames/git-cz
.
These are not ${type}
so in your configuration if you need to pass dynamically values to format
you can while keeping these separate. Helpful for when adding [skip ci]
to format
conditionally.
${type}
format: "static(hard): code value"
if you really want (please do not).
branchName
This is really only useful if you are using an issue tracker like Jira.
▲ git-cz [ABC-1234] git-cz
Would pull ABC-1234
in for {branchName}
If you were doing something like:
▲ git-cz [feature/gitflow-branch-names]
You would not want to pass branchPrefix
as that would be a long commit message.
Also most likely if you are doing feature branches you are doing ABC-1234
's into it.
Types
From gitmoji
:
-
access
: Improve accessibility -
analytics
: Add or update analytics or track code -
animation
: Add or update animations and transitions -
arch
: Make architectural changes -
assets
: Add or update assets -
beer
: Write code drunkenly -
breaking
: Introduce breaking changes -
build
: Add or update development scripts -
catch
: Catch errors -
ci
: Add or update CI build system -
clean
: Deprecate code that needs to be cleaned up -
compat
: Update code due to external API changes -
config
: Add or update configuration files -
contrib-add
: Add or update contributor(s) -
data
: Data exploration/inspection -
db
: Perform database related changes -
dep-add
: Add a dependency -
dep-rm
: Remove a dependency -
dep-up
: Add or update compiled files or packages -
deploy
: Deploy stuff -
docs
: Add or update documentation -
docs-code
: Add or update comments in source code -
downgrade
: Downgrade dependencies -
egg
: Add or update an easter egg -
experiment
: Perform experiments -
feat
: Introduce new features -
fix
: Fix a bug -
fix-ci
: Fix CI Build -
flags
: Add, update, or remove feature flags -
hotfix
: Critical hotfix -
i18n
: Internationalization and localization -
ignore
: Add or update a .gitignore file -
init
: Begin a project -
iphone
: Work on responsive design -
license
: Add or update license -
lint
: Fix compiler / linter warnings -
log-add
: Add or update logs -
log-rm
: Remove logs -
merge
: Merge branches -
mock
: Mock things -
mv
: Move or rename resources (e.g.: files, paths, routes) -
patch
: Simple fix for a non-critical issue -
perf
: Improve performance -
poo
: Write bad code that needs to be improved -
prune
: Remove code or files -
pushpin
: Pin dependencies to specific versions -
refactor
: Refactor code -
release
: Release / Version tags -
revert
: Revert changes -
rip
: Remove dead code -
roles
: Work on code related to authorization, roles and permissions -
security
: Fix security issues -
seed
: Add or update seed files -
seo
: Improve SEO -
snapshot
: Add or update snapshots -
style
: Improve structure / format of the code -
test
: Add or update tests -
texts
: Add or update text and literals -
types
: Add or update types -
typo
: Fix typos -
ui
: Add or update the UI and style files -
upgrade
: Upgrade dependencies -
ux
: Improve user experience / usability -
wip
: Work in progress
Custom additivies:
-
chore
: Changes that don’t modify src or test file -
rollforward
: Create rollforward version -
run-build
: Custom type for CI/CD to hook into run build override
Subject
The subject contains succinct description of the change:
- Use the imperative, present tense: "change" not "changed" nor "changes"
- No dot (.) at the end.
Body
Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior.
Breaking Changes
Breaking Changes must start with the words BREAKING CHANGE:
.
Husky
If you are using husky@5.x
on your project that has git-cz
as a local dependency please be cognizant of locally installed binaries:
If you were calling directly locally installed binaries, you need to run them via your package manager:
npx --no-install git-cz --hook || true
yarn git-cz --hook || true
Branch
Change the mode
and create branches via gitflow:
git-cz -m branch
Roadmap
This is not going to be great to type, but may be good to move to:
-
https://github.com/commitizen/cz-cli
and create adapter/plugins.⭐️ 11.k to 500⬇️ 373k to 23.9k