Skip to content

๐Ÿ’… Beautiful Changelogs using Conventional Commits

License

Notifications You must be signed in to change notification settings

jcamp-code/changelogen

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

changelogen

npm version npm downloads Codecov License

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 to CHANGELOG.md and resolved relative to dir. Use --no-output to write to console only.
  • --bump: Determine semver change and update version in package.json.
  • --release. Bumps version in package.json and creates commit and git tags using local git. You can disable commit using --no-commit and 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 on npm. You will need to set authorisation tokens separately via .npmrc or environment variables.
  • --publishTag Use custom npm tag for publishing (Default is latest)
  • --nameSuffix: Adds suffix to package name (Example: --nameSuffix canary renames foo to foo-canary)
  • --versionSuffix: Adds suffix to package version. When set without value or to true, uses date + commit hash as commit
  • --canary. Shortcut to --bump --versionSuffix (--nameSuffix will 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.

changelogen gh release

Changelogen has built-in functionality to sync with 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, use CHANGELOGEN_TOKENS_GITHUB or GITHUB_TOKEN or GH_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 ./src/config.ts for available options and defaults.

๐Ÿ’ป Development

  • Clone this repository
  • Enable Corepack using corepack enable (use npm i -g corepack for Node.js < 16.10)
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm dev

License

Made with ๐Ÿ’›

Published under MIT License.

About

๐Ÿ’… Beautiful Changelogs using Conventional Commits

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.7%
  • JavaScript 1.3%