Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,8 @@ Want the release-please result (version bump, CHANGELOG.md, tag, GitHub Release)

Replacing `semantic-release` without putting Node in the release pipeline? Same job, Node-free tooling (zipapp + `release.sh`): [semantic-release alternative without npm/Node](https://loki-inu.github.io/relnote/semantic-release-alternative.html).

Replacing `conventional-changelog` and commitizen (changelog plugins and commit prompts) without Node plugins for the release tooling? The same zipapp and `release.sh` write CHANGELOG.md, an optional version bump, and a tag offline: [conventional-changelog / commitizen alternative](https://loki-inu.github.io/relnote/conventional-changelog-alternative.html).

Releasing a Python package? [Release a Python package from conventional commits](https://loki-inu.github.io/relnote/python-package.html) bumps `version` in `pyproject.toml`, prepends CHANGELOG.md, and tags with `release.sh`, then a tag-push workflow checks the tag against `pyproject.toml`, builds, uploads to PyPI with trusted publishing, and creates the GitHub Release with relnote notes.

Releasing a Rust crate? [Release a Rust crate from conventional commits](https://loki-inu.github.io/relnote/rust-crate.html) bumps `version` in `Cargo.toml`, syncs `Cargo.lock` with `release.sh --exec "cargo update --workspace"`, prepends CHANGELOG.md, and tags; a tag-push workflow checks the tag against `Cargo.toml`, publishes with `cargo publish --locked` through crates.io trusted publishing, and creates the GitHub Release with relnote notes.
Expand Down
1 change: 1 addition & 0 deletions docs/changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ <h2>relnote vs git-cliff for CHANGELOG.md</h2>
</table>
</div>
<p>Pick git-cliff if you want custom templates, commit parsers, or a computed next version. Pick relnote if you want sensible Keep a Changelog sections and a Release body with nothing to configure.</p>
<p>Coming from the Node <code>conventional-changelog</code> CLI or commitizen? <a href="conventional-changelog-alternative.html">conventional-changelog / commitizen alternative</a> writes the same kind of section offline, and <code>examples/release.sh</code> adds the version bump and tag.</p>

<footer>MIT licensed. <a href="https://github.com/loki-inu/relnote">Source</a> · <a href="https://github.com/loki-inu/relnote/issues">Issues</a> · <a href="llms.txt">llms.txt</a></footer>
</main>
Expand Down
391 changes: 391 additions & 0 deletions docs/conventional-changelog-alternative.html

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ <h1>relnote</h1>
· <a href="rust-crate.html">Rust crate releases (Cargo.toml, Cargo.lock, crates.io)</a>
· <a href="npm-package.html">npm package releases (package.json, package-lock.json, npmjs)</a>
· <a href="semantic-release-alternative.html">semantic-release alternative (no npm/Node)</a>
· <a href="conventional-changelog-alternative.html">conventional-changelog / commitizen alternative</a>
· <a href="windows.html">Windows and PowerShell</a>
</div>

Expand Down
5 changes: 5 additions & 0 deletions docs/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ No release PR bot: a workflow_dispatch job runs the relnote action (has-changes

Replace semantic-release's Node plugin stack with offline relnote + examples/release.sh + a workflow_dispatch (or tag-push) Actions job: has-changes gate, curl the pinned zipapp and release.sh (no npm for the tooling), --bump-file pyproject.toml or package.json, CHANGELOG.md, chore(release) commit, annotated tag, gh release create with --notes-file. Optional --exec "npm install --package-lock-only --ignore-scripts --silent" only when the product is npm. Differs from release-please-alternative (no release PR angle) and standard-version-alternative (local one-command). Guide: https://loki-inu.github.io/relnote/semantic-release-alternative.html

## conventional-changelog / commitizen alternative

conventional-changelog (conventional-changelog-cli and conventional-changelog-* presets) writes CHANGELOG.md and stops. commitizen and cz-cli prompt for a conventional commit message; they do not bump or tag, and relnote does not prompt — commits are already conventional. The offline zipapp plus examples/release.sh (pinned v0.3.7) prepends CHANGELOG.md, optionally bumps a version file (--bump-file; omit it for changelog + commit + tag only), commits chore(release): vX.Y.Z, and creates an annotated tag. --dry-run writes nothing. chore(release) commits are skipped in the notes unless --include-release-commits. Optional workflow_dispatch job: has-changes gate, same release.sh, gh release create --notes-file (never interpolate notes in run:). Node remains appropriate for an npm product (optional --exec to refresh package-lock.json; see npm-package.html), not for the release tooling. Differs from standard-version / commit-and-tag-version (Node one-command; see standard-version-alternative), semantic-release-alternative (CI publish loop), and release-please-alternative (release pull request). Guide: https://loki-inu.github.io/relnote/conventional-changelog-alternative.html

## Python packages (pyproject.toml, PyPI)

Locally: examples/release.sh --bump-file pyproject.toml (first version = "..." line, so [project] or [tool.poetry]) → next version from commits, CHANGELOG.md section, chore(release) commit, annotated tag; git push --follow-tags. Tag-push workflow: check v$version == tag via tomllib, python -m build, pypa/gh-action-pypi-publish with trusted publishing (environment pypi, id-token: write only on that job), then gh release create TAG dist/* --notes-file with the loki-inu/relnote action's notes. Dynamic versions (setuptools-scm, hatch-vcs): skip --bump-file; the tag is the version. __version__: importlib.metadata.version("pkg"). Guide: https://loki-inu.github.io/relnote/python-package.html
Expand Down Expand Up @@ -77,6 +81,7 @@ gh relnote prints the notes; gh relnote create TAG [gh release create flags] [--
- standard-version alternative (examples/release.sh): https://loki-inu.github.io/relnote/standard-version-alternative.html
- release-please alternative without a release PR (workflow_dispatch: bump version file, CHANGELOG.md, chore(release) commit, tag, gh release create; tested example): https://loki-inu.github.io/relnote/release-please-alternative.html
- semantic-release alternative without npm/Node (workflow_dispatch: zipapp + release.sh, no Node for tooling; tested example): https://loki-inu.github.io/relnote/semantic-release-alternative.html
- conventional-changelog / commitizen alternative (offline zipapp + release.sh: CHANGELOG.md, optional version bump, tag; no Node plugins; tested example): https://loki-inu.github.io/relnote/conventional-changelog-alternative.html
- Release a Python package (pyproject.toml bump, CHANGELOG.md, tag, PyPI trusted publishing, GitHub Release; tested example): https://loki-inu.github.io/relnote/python-package.html
- Release a Rust crate (Cargo.toml + Cargo.lock bump, CHANGELOG.md, tag, crates.io trusted publishing, GitHub Release; tested with real cargo): https://loki-inu.github.io/relnote/rust-crate.html
- Release an npm package (package.json + package-lock.json bump, CHANGELOG.md, tag, npm trusted publishing, GitHub Release; tested with real npm): https://loki-inu.github.io/relnote/npm-package.html
Expand Down
1 change: 1 addition & 0 deletions docs/next-version.html
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ <h2>Compared to version-bump tools</h2>
</table>
</div>
<p>Want the old <code>npx standard-version</code> flow (bump version files, changelog, commit, tag) in one local command? See <a href="standard-version-alternative.html">standard-version alternative</a>.</p>
<p>Coming from <code>conventional-changelog</code> and commitizen? <a href="conventional-changelog-alternative.html">CHANGELOG.md and a version bump without Node plugins</a>.</p>
<p>If you want the whole release automated (version files, tags, PRs, npm publish), keep semantic-release or release-please. relnote is for when you want the answer and the notes, and want to do the tagging yourself.</p>

<footer>
Expand Down
3 changes: 2 additions & 1 deletion docs/release-please-alternative.html
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@
</head>
<body>
<main>
<p class="tag"><a href="./">relnote docs</a> · <a href="github-action.html">GitHub Action</a> · <a href="standard-version-alternative.html">standard-version alternative</a> · <a href="semantic-release-alternative.html">semantic-release alternative</a> · <a href="changelog.html">CHANGELOG.md</a> · <a href="next-version.html">Next version</a></p>
<p class="tag"><a href="./">relnote docs</a> · <a href="github-action.html">GitHub Action</a> · <a href="standard-version-alternative.html">standard-version alternative</a> · <a href="semantic-release-alternative.html">semantic-release alternative</a> · <a href="conventional-changelog-alternative.html">conventional-changelog alternative</a> · <a href="changelog.html">CHANGELOG.md</a> · <a href="next-version.html">Next version</a></p>
<h1>A release-please alternative without a release PR</h1>
<p class="tag">release-please keeps a release pull request open, updates it on every merge, and cuts the release when you merge it. If you would rather press one button when you want a release, this workflow does the same work in one run: next version from conventional commits, version bump in <code>pyproject.toml</code> or <code>package.json</code>, a new <code>CHANGELOG.md</code> section, a <code>chore(release)</code> commit, a tag, and a GitHub Release. No bot PR, no config files, no API calls besides the final <code>gh release create</code>.</p>
<div class="links">
Expand Down Expand Up @@ -348,6 +348,7 @@ <h2>Monorepo packages</h2>
<p>Pass the package's tag prefix and path to <code>release.sh</code> and to the notes step: <code>bash "$RUNNER_TEMP/release.sh" --tag-prefix api/v --bump-file packages/api/package.json -- --path packages/api</code>, then <code>relnote --tag-prefix api/v --path packages/api --output …</code>. Change the guard's <code>'v*'</code> to <code>'api/v*'</code>. See the <a href="monorepo.html">monorepo guide</a> for a matrix over packages.</p>

<p>Looking for a <code>semantic-release</code> replacement without Node in the release pipeline? Same workflow under a different angle: <a href="semantic-release-alternative.html">semantic-release alternative without npm/Node</a>.</p>
<p>Replacing <code>conventional-changelog</code> and commitizen instead? <a href="conventional-changelog-alternative.html">conventional-changelog / commitizen alternative</a> (local CHANGELOG.md and version bump, no Node plugins).</p>

<p>Publishing to PyPI? <a href="python-package.html">Release a Python package from conventional commits</a> adds the tag check, build, and trusted-publishing upload.</p>

Expand Down
3 changes: 2 additions & 1 deletion docs/semantic-release-alternative.html
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@
</head>
<body>
<main>
<p class="tag"><a href="./">relnote docs</a> · <a href="github-action.html">GitHub Action</a> · <a href="release-please-alternative.html">release-please alternative</a> · <a href="standard-version-alternative.html">standard-version alternative</a> · <a href="npm-package.html">npm packages</a></p>
<p class="tag"><a href="./">relnote docs</a> · <a href="github-action.html">GitHub Action</a> · <a href="release-please-alternative.html">release-please alternative</a> · <a href="standard-version-alternative.html">standard-version alternative</a> · <a href="conventional-changelog-alternative.html">conventional-changelog alternative</a> · <a href="npm-package.html">npm packages</a></p>
<h1>A semantic-release alternative without npm/Node</h1>
<p class="tag"><code>semantic-release</code> analyzes conventional commits in CI, picks the next version, writes notes, tags, creates a GitHub Release, and optionally publishes — through a Node plugin stack. If you want that loop without installing Node for the release tooling, without <code>.releaserc</code> / <code>release.config.js</code>, and without plugins that need the network during analysis, this workflow does it with the relnote zipapp, <code>examples/release.sh</code>, and a one-button (or tag-push) Actions job.</p>
<div class="links">
Expand Down Expand Up @@ -361,6 +361,7 @@ <h2>Local dry-run (no CI)</h2>
chmod +x release.sh
./release.sh --dry-run --bump-file pyproject.toml</code></pre>
<p>Same script as the <a href="standard-version-alternative.html">standard-version alternative</a>; nothing is written until you drop <code>--dry-run</code>.</p>
<p>Replacing <code>conventional-changelog</code> and commitizen (changelog plugins and commit prompts) rather than the semantic-release plugin stack? <a href="conventional-changelog-alternative.html">conventional-changelog / commitizen alternative</a>.</p>

<h2>Monorepo packages</h2>
<p>Pass the package&#x27;s tag prefix and path: <code>bash "$RUNNER_TEMP/release.sh" --tag-prefix api/v --bump-file packages/api/package.json -- --path packages/api</code>, then <code>relnote --tag-prefix api/v --path packages/api --output …</code>. Change the guard&#x27;s <code>'v*'</code> to <code>'api/v*'</code>. See the <a href="monorepo.html">monorepo guide</a>.</p>
Expand Down
6 changes: 6 additions & 0 deletions docs/sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,10 @@
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://loki-inu.github.io/relnote/conventional-changelog-alternative.html</loc>
<lastmod>2026-11-05</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
3 changes: 2 additions & 1 deletion docs/standard-version-alternative.html
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@
</head>
<body>
<main>
<p class="tag"><a href="./">relnote docs</a> · <a href="changelog.html">CHANGELOG.md</a> · <a href="next-version.html">Next version</a> · <a href="semantic-release-alternative.html">semantic-release alternative</a> · <a href="compare.html">Compare</a> · <a href="ci.html">Any CI</a></p>
<p class="tag"><a href="./">relnote docs</a> · <a href="changelog.html">CHANGELOG.md</a> · <a href="next-version.html">Next version</a> · <a href="semantic-release-alternative.html">semantic-release alternative</a> · <a href="conventional-changelog-alternative.html">conventional-changelog alternative</a> · <a href="compare.html">Compare</a> · <a href="ci.html">Any CI</a></p>
<h1>standard-version alternative: bump, CHANGELOG.md and tag without Node</h1>
<p class="tag"><code>standard-version</code> is deprecated (its README says so and points to release-please or the commit-and-tag-version fork), but it still gets hundreds of thousands of npm downloads a week. If what you liked was one local command that bumps the version, writes the changelog and tags, relnote can do that without Node, without a config file, and without moving your release into a GitHub Actions bot.</p>
<div class="links">
Expand Down Expand Up @@ -237,6 +237,7 @@ <h2>When to pick something else</h2>
<li><strong>commit-and-tag-version</strong>: the maintained drop-in fork. Keep it if you depend on <code>.versionrc</code>, prerelease bumps, lifecycle scripts or custom presets.</li>
<li><strong>release-please</strong>: the upstream recommendation for GitHub. It opens a release PR from a bot and does the bump, changelog and Release when you merge it.</li>
<li><strong>semantic-release</strong>: fully automated publish from CI, with plugins for npm and others. Prefer a Node-free CI release instead? <a href="semantic-release-alternative.html">semantic-release alternative without npm/Node</a>.</li>
<li><strong>conventional-changelog / commitizen</strong>: changelog presets and interactive commit prompts. Offline CHANGELOG.md plus the bump, without those Node plugins: <a href="conventional-changelog-alternative.html">conventional-changelog alternative</a>.</li>
<li><strong>relnote + release.sh</strong>: you want the old one-command local release, in any language, with no Node and no config. See also <a href="compare.html">git-cliff and gh --generate-notes</a>.</li>
</ul>

Expand Down
Loading
Loading