Generate changelog for repositories using gitmoji commits convention.
Prerequisites:
npm install -g gitmoji-changelog
cd my-project
gitmoji-changelog
If CHANGELOG.md
file doesn't exist, it will generate all previous changelog based on semver tags of your repo.
If CHANGELOG.md
file already exists, this will not overwrite any previous changelog, it will generate a changelog based on commits since the last semver tag that match.
All available commands and parameters can be listed using: gitmoji-changelog --help
Here an example output: CHANGELOG.md
Here the recommended workflow to generate your changelog file using gitmoji-changelog
:
Important: Before generating, be sure to have all tags locally (e.g. git fetch origin
)
- Make changes and commit:
git commit -m ":sparkles: my awesome feature"
- Bump version (ex:
1.0.0
) inpackage.json
using semver convention - Run
gitmoji-changelog
, then the fileCHANGELOG.md
is created or updated with all changes - You can freely edit the new release in the changelog file, it will not be overwrite with the next generation
- Commit
package.json
andCHANGELOG.md
file - Tag your release:
git tag -a v1.0.0 -m "v1.0.0"
(or create a Github release) - Push to the remote
git push
By default when you generate your changelog with gitmoji-changelog
, the following mapping is used to group commits :
// TODO: How to override the default mapping with it's own.
Full CLI documentation in gitmoji-changelog-cli package
Full API documentation in gitmoji-changelog-core package
git clone git@github.com:frinyvonnick/gitmoji-changelog.git
cd gitmoji-changelog && yarn
We are using lerna and yarn workspaces to split the library in modules:
- gitmoji-changelog-cli - the full-featured command line interface
- gitmoji-changelog-core - the core lib generating changelog
- gitmoji-changelog-markdown - the markdown changelog file writer
Execute it locally:
node [path-to-gitmoji-changelog-folder]/packages/gitmoji-changelog-cli/src/index.js
Execute tests:
We are using jest to manage unit testing.
yarn test
# or
yarn test --watch
Execute linter:
We are using airbnb-base as linter:
yarn lint