changelogen
Generate Beautiful Changelogs using Conventional Commits.
Generate Beautiful Changelogs using Conventional Commits
Quick Start
Generate a changelog in Markdown format and display in the console:
npx changelogen@latest
Generate a changelog, bump the version in package.json and update CHANGELOG.md (without commit):
npx changelogen@latest --bump
Bump the version, update CHANGELOG.md and make a git commit and tag:
npx changelogen@latest --release
CLI Usage
npx changelogen@latest [...args] [--dir <dir>]
Arguments:
--from: Start commit reference. When not provided, latest git tag will be used as default.--to: End commit reference. When not provided, latest commit in HEAD will be used as default.--dir: Path to git repository. When not provided, current working directory will be used as as default.--clean: Determine if the working directory is clean and if it is not clean, exit.--output: Changelog file name to create or update. Defaults toCHANGELOG.mdand resolved relative to dir. Use--no-outputto write to console only.--noAuthors: Skip contributors section in changelog.--bump: Determine semver change and update version inpackage.json.--release. Bumps version inpackage.jsonand creates commit and git tags using localgit. You can disable commit using--no-commitand tag using--no-tag. You can enable the automatic push of the new tag and release commit to your git repository by adding--push.--publish. Publishes package as a new version onnpm. You will need to set authorisation tokens separately via.npmrcor environment variables.--publishTagUse custom npm tag for publishing (Default islatest)--nameSuffix: Adds suffix to package name (Example:--nameSuffix canaryrenamesfootofoo-canary)--versionSuffix: Adds suffix to package version. When set without value or totrue, uses date + commit hash as commit--canary. Shortcut to--bump --versionSuffix(--nameSuffixwill be also added if arg has a string value).-r: Release as specific version.--major: Bump as a semver-major version--minor: Bump as a semver-minor version--patch: Bump as a semver-patch version--premajor: Bump as a semver-premajor version, can set id with string.--preminor: Bump as a semver-preminor version, can set id with string.--prepatch: Bump as a semver-prepatch version, can set id with string.--prerelease: Bump as a semver-prerelease version, can set id with string.--hideAuthorEmail: Do not include author email in changelog if github username cannot be found.
0. or 0.0. follow different rules.In these cases, the second or third digit is treated as the major version. They use the formats 0.major.minor and 0.0.major instead of the standard major.minor.patch.To ensure consistent semantic versioning, start version numbering at 1.0.0.changelogen gh release
Changelogen has built-in functionality to sync with Github releases.
In order to manually sync a release, you can use changelogen gh release. It will parse current CHANGELOG.md from current repository (local, then remote) and create or update releases.
Usage:
npx changelogen@latest gh release [all|versions...] [--dir] [--token]
To enable this integration, make sure there is a valid repository field in package.json or repo is set in .changelogenrc.
By default in unauthenticated mode, changelogen will open a browser link to make manual release. By providing github token, it can be automated.
- Using environment variables or
.env, useCHANGELOGEN_TOKENS_GITHUBorGITHUB_TOKENorGH_TOKEN - Using CLI args, use
--token <token> - Using global configuration, put
tokens.github=<token>inside~/.changlogenrc - Using GitHub CLI token when authenticated with
gh auth login
Configuration
Configuration is loaded by unjs/c12 from cwd. You can use either changelog.config.json, changelog.config.{ts,js,mjs,cjs}, .changelogrc or use the changelog field in package.json.
See https://raw.githubusercontent.com/unjs/changelogen/main/src/config.ts for available options and defaults.
💻 Development
- Clone this repository
- Enable Corepack using
corepack enable(usenpm i -g corepackfor Node.js < 16.10) - Install dependencies using
pnpm install - Run interactive tests using
pnpm dev
License
Made with 💛
Published under MIT License.