Skip to content

chore(release): migrate tooling to bun, rollup-esbuild, and semantic-release#598

Open
meabed wants to merge 160 commits into
masterfrom
develop
Open

chore(release): migrate tooling to bun, rollup-esbuild, and semantic-release#598
meabed wants to merge 160 commits into
masterfrom
develop

Conversation

@meabed

@meabed meabed commented May 2, 2026

Copy link
Copy Markdown
Owner

Summary

Replace the changesets + custom-scripts release flow with semantic-release driven by conventional commits, and consolidate the build/test toolchain on bun. The new validate.yml reusable workflow is the single source of truth for what counts as "validated" — both ci.yml (PR/feature pushes) and release.yml (master/develop) call it.

Build

  • rollup.config.jsrollup.config.cjs using rollup-plugin-esbuild for fast .ts → .js compilation; @rollup/plugin-typescript runs once for declarations only.
  • 10 entries × CJS + ESM + types output preserved (62 files in dist/, identical public API).

Test

  • jestbun test (131 tests passing, 256 expects).
  • Added import { describe, it, expect } from 'bun:test' to test files.
  • Dropped jest.config.js, ts-jest, ts-node, @types/jest.

Release

  • Changesets + scripts/release/.releaserc.json + semantic-release.
  • master → npm latest (stable). develop → npm beta (prerelease).
  • npm publish with provenance (sigstore attestations via id-token: write).

Tooling

  • yarn → bun (drop yarn.lock, packageManagerbun@1.3.13).
  • biome 2.4.14 with simpler config (lineWidth: 120, recommended preset + targeted overrides).
  • Dropped size-limit and prettier configs.

⚠️ Breaking

  • engines.node floor bumped to >= 22 (was >=16).
  • engines.bun added at >= 1.3.
  • All future commits to master / develop MUST follow conventional commit format. Non-release types (chore, docs, test, build, ci, style) won't trigger a release.
  • Yarn no longer supported as the project lockfile (use bun).

This commit itself is chore(release): — semantic-release will not auto-publish from it. Cut the breaking 3.0.0 release intentionally with a feat!: or BREAKING CHANGE: commit when ready.

Test plan

  • bun run lint clean
  • bun run typecheck clean
  • bun test — 131 passing
  • bun run build — 62 dist artifacts (CJS + ESM + types + sourcemaps)
  • bunx semantic-release --dry-run --no-ci — config validates, all plugins load
  • Verify NPM_TOKEN secret exists on the repo before merging
  • Verify CI matrix passes on Node 22 and 24
  • After merge to master: confirm semantic-release picks up the next conventional-commit feat: / fix: and publishes

meabed and others added 30 commits September 4, 2025 17:11
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#473)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#479)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
meabed and others added 14 commits April 23, 2026 16:54
…release

Replace the changesets + custom-scripts release flow with semantic-release
driven by conventional commits, and consolidate the build/test toolchain
on bun. The `validate.yml` reusable workflow is now the single source of
truth for what counts as "validated" — both ci.yml (PR/feature pushes)
and release.yml (master/develop) call it.

Build:
- rollup.config.js → rollup.config.cjs using rollup-plugin-esbuild for
  fast .ts → .js compilation; @rollup/plugin-typescript runs once for
  declarations only
- 10 entries × CJS+ESM+types output preserved

Test:
- jest → bun test (131 tests passing)
- add `import { ... } from 'bun:test'` to test files
- drop jest.config.js, ts-jest, ts-node, @types/jest

Release:
- changesets + scripts/release/ → .releaserc.json + semantic-release
- master → npm `latest`, develop → npm `beta` (prerelease)
- npm publish with provenance (sigstore attestations)

Tooling:
- yarn → bun (drop yarn.lock, packageManager → bun@1.3.13)
- biome 2.4.14 with simpler config (lineWidth 120, recommended preset)
- drop size-limit and prettier configs

Engines floor bumped to node >= 22 / bun >= 1.3.
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@github-actions

github-actions Bot commented May 2, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 3.0.0-beta.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

renovate Bot and others added 14 commits May 6, 2026 16:59
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Adds bun run release:local for manual one-off publishes (e.g. when CI is
unavailable or for prereleases not wired into release.yml). Overrides
publishConfig.provenance with --provenance=false locally since npm
rejects sigstore attestations outside supported CI environments; the
release.yml workflow continues to publish with provenance.
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant