ccommit
Version:
π β π π° ccommit Conventional Commit Generator that interprets commit types from gitmoji and conventional
173 lines (121 loc) β’ 4.08 kB
Markdown
# π β π π° `ccommit`
`ccommit` is a conventional commit generator that interprets commit types from `gitmoji` through `conventional-commits` to propose a bridged gap through multiple formats.
For developers that use `gitmoji` it is not always possible to do so in every project. However, to keep workflows the same it would be ideal to introduce a configuration that would provide standards to applications while having some modicum of βfun.β
This can hook into your release system to create release notes.
> **π Note:** This package is ESM
## Usage
### Local
Install as a `devDependencies`:
```bash
# pnpm
pnpm add ccommit --save-dev
```
<!--
```bash
# npm
npm install ccommit --save-dev
# yarn
yarn add ccommit --dev
```
-->
> **π Note:** This is my preference as I try to limit globals wherever possible.
### Global
```bash
# pnpm
pnpm add ccommit --global
```
<!--
```bash
# npm
npm install ccommit --g
# yarn
yarn global add ccommit
# homebrew
brew install ccommit
```
-->
> **π Note:** For non-node projects this _can_ be helpful, but again, try to limit globals.
### Client
Call directly after staging files
```bash
# local
pnpm ccommit -c
# global
ccommit -c
```
<!--
```bash
# packages
# node ./packages/ccommit/dist/index.js -c
```
-->
> **π Note:** Choose `local` or `global`
### Hook
Add this to your `prepare-commit-msg` for `git`:
```bash
exec < /dev/tty
# local
pnpm ccommit --hook || true
# global
ccommit --hook || true
```
<!--
```bash
# packages
# node ./packages/ccommit/dist/index.js --hook || true
```
-->
> **π Note:** Choose `local` or `global`
## Options
```bash
β² packages [main] pnpm ccommit -h
Conventional Commit Generator that interprets commit types from gitmoji and conventional
Usage
$ ccommit -c
Flags
--breaking, -b π₯ Breaking Change
--commit, -c π½ Mode: Client
--dryrun, -n π½ Mode: Dry Run
--emoji, -e π Emoji (default)
--hook, -u πͺ Mode: Hook
--list, -l π List all types
--version, -v π¦ Print installed version
Options
--format π Commit Format: conventional|gitmoji (default)
--message π Commit Message
--scope π¬ Commit Scope
--title π Commit Title
--type β¨ Commit Type
Notes
- Pass any non-format options the following will be required: --title, --type
- If you do not pass any options the Conventional Commit Generator prompt will run
- Branch Name detection is enabled to pre-populate Issue Tracker information in prompt
```
## Formats
### Gitmoji
- π [gitmoji](https://gitmoji.dev)
- π§ͺ Examples
- β¨ (scope) ABC-123 subject
- π (github) subject
- π subject
### Conventional
- π [conventional](https://www.conventionalcommits.org)
- a mapping of `gitmoji` to what could be construed as itβs more in-depth `conventional` counterparts
- can pass `--noemoji|-xe` and turn emojis off within `conventional`
- π§ͺ Examples
- feat(scope): β¨ ABC-123 subject
- fix-ci(github): π subject
- fix: π subject
<!--
### Custom
π Creating a `custom` configuration can be ideal if you want more control, or have more specific business needs for your application. Using `cosmiconfig` you can create:
- `.ccommit`
- `.ccommit.json`
- `.ccommit.js`
By providing configuration options for your project.
-->
## Roadmap
This was meant to sunset `@jeromefitz/git-cz` as a year-end personal hackathon. This will keep up with `gitmoji` and ideally some tenets of βbest of both worldsβ could make it to `gitmoji-cli` some day. (There are a few closed issues on βboringβ versions already, and with this using `enquirer` probably less and less of a chance.)
As a result it is a mash-up of both and I have tried to add references where applicable:
- π [`gitmoji-cli`](https://github.com/carloscuesta/gitmoji-cli)
- π [`@jeromefitz/git-cz`](https://github.com/jeromefitz/packages)