Skip to content

chore: migrate release pipeline from @jscutlery/semver to nx release#97

Merged
lukascivil merged 1 commit intomasterfrom
chore/migrate-to-nx-release
Apr 24, 2026
Merged

chore: migrate release pipeline from @jscutlery/semver to nx release#97
lukascivil merged 1 commit intomasterfrom
chore/migrate-to-nx-release

Conversation

@lukascivil
Copy link
Copy Markdown
Owner

@lukascivil lukascivil commented Apr 24, 2026

Objective

Replace the @jscutlery/semver + ngx-deploy-npm release pipeline with Nx's built-in nx release, consolidating version bump, changelog, git tag/push, GitHub release, and npm publish into a single command while preserving the existing conventional-commits-driven, per-project semver behavior.

What was done

  • Configured nx.jsonrelease with projects: ["json-difference", "json-difference-cli"], projectsRelationship: "independent", releaseTagPattern: "{projectName}-{version}", per-project changelogs with GitHub release creation, and git commit/tag/push enabled.
  • Mapped conventional commit types under release.conventionalCommits.types so feat → minor, fix/docs/chore/refactor → patch, keeping parity with the prior @jscutlery/semver behavior.
  • Removed the version, github, and npm executor targets from libs/json-difference/project.json and libs/json-difference-cli/project.jsonnx release now drives these.
  • Rewrote package.json release / release:dry-run scripts to call yarn nx release (with --dry-run when previewing) and dropped @jscutlery/semver, ngx-deploy-npm, and conventional-changelog-conventionalcommits from devDependencies (with matching yarn.lock cleanup).
  • Updated .github/workflows/release-and-publish.yml to invoke yarn nx release --yes with explicit --projects= and --dry-run flag handling, and removed the now-unused nrwl/nx-set-shas step.
  • Refreshed the "Release flow" section of CLAUDE.md to describe the new nx release pipeline, the tag pattern, and the semver-bump mapping.

Test plan

  • Run yarn release:dry-run --projects=json-difference locally and confirm the planned version bump, changelog, and tag match expectations.
  • Trigger the release-and-publish workflow with dry_run=true and name=all, verify it runs nx release --yes --dry-run cleanly with no publish side effects.
  • Trigger the same workflow with dry_run=true and name=json-difference, confirm the --projects=json-difference flag is forwarded.
  • After merge, run a real release on one package and verify CHANGELOG.md, the {projectName}-{version} git tag, the GitHub release, and the npm publish all succeed end-to-end.

@lukascivil lukascivil changed the title chore: migrate to nx release chore: migrate release pipeline from @jscutlery/semver to nx release Apr 24, 2026
@lukascivil lukascivil merged commit 7730a65 into master Apr 24, 2026
4 checks passed
@lukascivil lukascivil deleted the chore/migrate-to-nx-release branch April 24, 2026 04: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