@inett/semantic-release-unsquash
Version:
Forked version of semantic-release-unsquash w/o release-notes-generator
89 lines (62 loc) • 2.12 kB
Markdown
# **@inett/semantic-release-unsquash**
**This is a fork of [semantic-release-unsquash](https://www.npmjs.com/package/semantic-release-unsquash) by [romap0](https://www.npmjs.com/~romap0)** with built-in `commit-analyzer` **and** `release-notes-generator` support and opinionated defaults.
A tiny wrapper for [commit-analyzer](https://github.com/semantic-release/commit-analyzer) and [release-notes-generator](https://github.com/semantic-release/release-notes-generator) which works with **squashed merge requests** (e.g. GitLab or GitHub squash commits).
It "unsquashes" the original commits from the squash message and feeds them to the underlying plugins.
## 🚀 Features
- Parses `* commit` style squash messages
- Built-in `commitAnalyzerConfig` and `notesGeneratorConfig`
- Supports GitHub and GitLab squash commit templates
- Optional override via plugin config in `package.json`
## 📦 Install
```bash
npm install -D @inett/semantic-release-unsquash
```
## 🔧 Usage
```json
{
"plugins": ["@inett/semantic-release-unsquash"]
}
```
✨ You don't need to provide extra configuration — the plugin uses sensible defaults for:
- Conventional Commits parsing
- Release rules
- Changelog section titles
- Breaking change keywords
## ⚙️ Optional Overrides
If you want to override or extend the defaults:
```json
{
"plugins": [
[
"@inett/semantic-release-unsquash",
{
"commitAnalyzerConfig": {
"releaseRules": [{ "type": "deps", "release": "patch" }]
},
"notesGeneratorConfig": {
"presetConfig": {
"types": [
{ "type": "deps", "section": "📦 Dependencies", "hidden": false }
]
}
}
}
]
]
}
```
## 💡 Usage with GitHub
GitHub automatically adds a list of original commits to the squash message. This plugin will parse those and pass them on to semantic-release.
## 💡 Usage with GitLab
To enable unsquashing, set your squash commit template in **Project Settings → Merge Requests** to:
```text
%{title}
%{all_commits}
```