semantic-release-pr-fix
Version:
Wrapper for @semantic-release/commit-analyzer that handles Azure DevOps PR merge commits
81 lines (60 loc) • 3.26 kB
Markdown
A wrapper for [commit-analyzer](https://github.com/semantic-release/commit-analyzer) and [release-notes-generator](https://github.com/semantic-release/release-notes-generator) that handles Azure DevOps PR merge commits.
[](https://www.npmjs.com/package/semantic-release-pr-fix)
When using semantic-release with Azure DevOps repositories, merged PRs have a prefix added to the commit message: `Merged PR 1234: original message`. This prevents semantic-release from properly detecting release types because it expects semantic commit messages to start with prefixes like `feat:`, `fix:`, etc.
This wrapper strips the Azure DevOps PR prefix from commit messages before passing them to the commit-analyzer, allowing semantic-release to properly parse your commits.
```bash
npm install -D semantic-release-pr-fix
```
In your `.releaserc.json` or `release.config.js` file:
```json
{
"plugins": [
["semantic-release-pr-fix", {
"commitAnalyzerConfig": {
"preset": "angular",
"parserOpts": {
"noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES", "BREAKING"]
}
},
"notesGeneratorConfig": {
"preset": "angular",
"writerOpts": {
"commitsSort": ["subject", "scope"]
}
}
}],
"@semantic-release/npm",
"@semantic-release/github"
]
}
```
This plugin replaces both `@semantic-release/commit-analyzer` and `@semantic-release/release-notes-generator` by wrapping them with Azure DevOps PR merge commit compatibility.
The plugin supports the following configuration options:
| Option | Description |
|--------|-------------|
| `commitAnalyzerConfig` | Configuration object passed directly to `@semantic-release/commit-analyzer`. See [commit-analyzer documentation](https://github.com/semantic-release/commit-analyzer#options) for available options. |
| `notesGeneratorConfig` | Configuration object passed directly to `@semantic-release/release-notes-generator`. See [release-notes-generator documentation](https://github.com/semantic-release/release-notes-generator#options) for available options. Set to `false` to disable release notes generation. |
If you want to use a different release notes generator plugin, you can disable the built-in notes generation:
```json
{
"plugins": [
["semantic-release-pr-fix", {
"commitAnalyzerConfig": {
"preset": "angular"
},
"notesGeneratorConfig": false
}],
"@semantic-release/release-notes-generator",
"@semantic-release/npm"
]
}
```
The plugin processes each commit message and removes the Azure DevOps PR merge prefix (`Merged PR xxxx:`) before passing the commits to the standard semantic-release plugins. This allows your semantic commit messages to be properly recognized even when they're part of merged PRs in Azure DevOps.
It handles both version determination (via `commit-analyzer`) and release notes generation (via `release-notes-generator`), ensuring consistent processing of PR merge commits throughout the semantic-release pipeline.