Skip to content

fix(semantic-release-config): skip releases when the packed output is unchanged - #350

Merged
FRSgit merged 1 commit into
mainfrom
fix/semantic-release-skip-unchanged
Nov 7, 2026
Merged

FRSgit merged 1 commit into
mainfrom
fix/semantic-release-skip-unchanged

Conversation

@FRSgit

@FRSgit FRSgit commented Nov 7, 2026

Copy link
Copy Markdown
Member

Fixes the root cause of FRSOURCE/is-animated#69: every Renovate chore(deps) merge cut a patch release, even when nothing consumers receive changed.

What changes

  • The commit analyzer is wrapped by a small plugin (skip-unchanged.mjs). When chore(deps) commits are the only reason to release, it runs npm pack on the current tree and on the last published version and compares them.
  • Files are compared byte for byte. In package.json, only version, devDependencies and registry-injected fields are ignored, so changes to dependencies, exports, engines etc. still release.
  • Any fix, feat or breaking commit always releases, without packing.
  • Fails open: if the comparison can't be made (first release, version not on npm, offline), the release goes ahead as before.

Verification

  • Unit tests (pnpm test).
  • Run against is-animated after a fresh build: deps-only vs 3.0.3 is skipped, vs 3.0.2 (real change) releases, unknown version releases, fix: releases.
  • A fresh build is byte-identical to the published 3.0.3 tarball.

🤖 Generated with Claude Code

… unchanged

Wrap the commit analyzer so chore(deps)-only releases are skipped when
npm pack output matches the last published version.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@FRSgit
FRSgit merged commit 052c422 into main Nov 7, 2026
2 checks passed
@FRSgit
FRSgit deleted the fix/semantic-release-skip-unchanged branch November 7, 2026 23:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant