Skip to content

chore: migrate next tooling to bun, tsdown, and biome - #199

Merged
tarikjabiri merged 2 commits into
nextfrom
chore/next-migrate-tooling
Sep 16, 2026
Merged

tarikjabiri merged 2 commits into
nextfrom
chore/next-migrate-tooling

Conversation

@tarikjabiri

Copy link
Copy Markdown
Member

Summary

Mirrors the main toolchain migration on the v3 alpha branch and updates dependencies to clear security advisories in the old toolchain.

  • Package manager: pnpm → bun (bun.lock, pnpm-lock.yaml removed)
  • Build: tsup → tsdown — esm + cjs for all 3 entries (index, helpers, svg) with a single .d.ts per entry, plus the IIFE global bundle (DXFWriter). Correct .cjs/.mjs extensions.
  • Lint/format: eslint → biome (biome.json, .editorconfig)
  • Deps bumped to latest (the reason for this PR): vitepress 1.0.0-rc.4 → ^1.6.4, vitest 0.34 → ^5, @vitest/coverage-v8 → ^5, typescript → ^7, @types/node → ^22, vue → ^3.5; dropped tsx and @typescript-eslint/*. This clears the vulnerabilities from the old vitepress-rc / vite / esbuild / vitest chain.
  • tsconfig: added tsconfig.build.json (extends base) for the build; keeps the @/* alias.
  • CI/CD: bun + latest actions; CD uses OIDC staged publishing (npm stage publish) matching the trusted publisher. Added codecov.yml and bun-based vercel.json.
  • Test fix: manager.test.ts had an unawaited toMatchFileSnapshot with a malformed path; vitest 5 enforces awaiting async assertions. Awaited it and moved the snapshot to __snapshots__/manager.line.snap.
  • Version: 3.0.0-alpha.13 → 3.0.0-alpha.14

Verified locally

  • bun install --frozen-lockfile ✓
  • bun run build — all entries + IIFE emit ✓
  • bun run test — 78/78 pass ✓
  • bun run coverage — 99% statements / 99.66% lines ✓
  • bun run docs:build ✓

- switch package manager pnpm -> bun (bun.lock, drop pnpm-lock)
- replace tsup with tsdown: esm + cjs for all 3 entries with single
  .d.ts, plus the iife global bundle
- replace eslint with biome (biome.json, .editorconfig)
- bump dev deps to latest, clearing advisories in the old toolchain
  (vitepress rc, vitest 0.34, tsx 3, typescript-eslint)
- update CI/CD to bun + OIDC staged publishing; add codecov + vercel config
- fix unawaited toMatchFileSnapshot in manager test (vitest 5 enforces it)
  and its malformed snapshot path
- bump version to 3.0.0-alpha.14
vitepress pins vite 5 (no ./module-runner export); vitest 5 needs vite
6+. Node test workers resolved the top-level vite 5 and crashed with
ERR_PACKAGE_PATH_NOT_EXPORTED. Add vite ^7 as a direct devDep so the
modern vite sits at top level; vitepress keeps its nested vite 5.
@codecov

codecov Bot commented Sep 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.44%. Comparing base (9e9a553) to head (b2faac2).
⚠️ Report is 33 commits behind head on next.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             next     #199      +/-   ##
==========================================
- Coverage   99.95%   99.44%   -0.52%     
==========================================
  Files          87       89       +2     
  Lines        4461     2337    -2124     
  Branches      481      260     -221     
==========================================
- Hits         4459     2324    -2135     
- Misses          2       13      +11     

see 86 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@tarikjabiri
tarikjabiri merged commit 3139fc1 into next Sep 16, 2026
5 checks passed
@tarikjabiri
tarikjabiri deleted the chore/next-migrate-tooling branch September 16, 2026 07:18

This branch was successfully deployed

1 active deployment
Preview — b2faac23 Deployed Sep 15, 2026 by vercel[bot]
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