Keep-a-changelog plugin for release-it
npm install @release-it/keep-a-changelogThis release-it plugin maintains your
CHANGELOG.md file according to the Keep A Changelog standards.
It updates the changelog automatically by:
- replacing the ## [Unreleased] header with the current version and release date.
- [optionally] adding a new ## [Unreleased] header as preparation for future changes.
It does not automatically populate the changelog with commit messages from the git history!
The idea and initial implementation comes from @eMarek.
```
npm install --save-dev @release-it/keep-a-changelog
In release-it config:
`json`
"plugins": {
"@release-it/keep-a-changelog": {
"filename": "CHANGELOG.md"
}
}
| option | default value | description |
| ----------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| filename | 'CHANGELOG.md' | File with changelogs. |false
| addUnreleased | | It leaves "Unreleased" title row if set to true. |false
| keepUnreleased | | It leaves "Unreleased" title row unchanged if set to true. |false
| addVersionUrl | | Links the version to the according changeset. Uses GitHub-compatible URLs by default, see other options to configure the URL format. |addVersionUrl
| versionUrlFormats | See below. | Determines the version URL format when is set to true. Uses GitHub-compatible URLs by default. |'HEAD'
| head | | The git revision the new version tag is compared to in the Unreleased URL. |
The URL formats used when addVersionUrl is set to true. Example configuration for a repository in Azure DevOps:
`json`
"plugins": {
"@release-it/keep-a-changelog": {
"filename": "CHANGELOG.md",
"head": "main",
"addVersionUrl": true,
"versionUrlFormats": {
"repositoryUrl": "https://dev.azure.com/...",
"unreleasedUrl": "{repositoryUrl}/branchCompare?baseVersion=GT{tagName}&targetVersion=GB{head}",
"versionUrl": "{repositoryUrl}/branchCompare?baseVersion=GT{previousTag}&targetVersion=GT{tagName}",
"firstVersionUrl": "{repositoryUrl}?version=GT{tagName}"
}
}
}
| option | default value | description |
| --------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| repositoryUrl | 'https://{host}/{repository}' | The format of the repository URL. |'{repositoryUrl}/compare/{tagName}...{head}'
| unreleasedUrl | | The format of the [Unreleased] section URL. |'{repositoryUrl}/compare/{previousTag}...{tagName}'
| versionUrl | | The format of a release version URL. |'{repositoryUrl}/releases/tag/{tagName}'` | The format of the first release version URL, i.e. when no previous tags have been released. |
| firstVersionUrl |