chore: migrate from pnpm to bun#21
Closed
arzafran wants to merge 1 commit into
Closed
Conversation
Standardize tempus on bun + biome (matching hamo), removing pnpm/npm. Package manager: - replace pnpm-lock.yaml + pnpm-workspace.yaml with bun.lock and a package.json "workspaces" field - scripts: pnpm → bun run / bun --filter; npm version → bun pm version (supports --preid/--no-git-tag-version); npm publish → bun publish - simplify `dev` to run the playground (it HMRs against packages/ source via the vite alias, so the tsup watch is no longer needed for demo work); `dev:build` stays for bundle-watching - drop the pnpm.overrides block: under bun, tsup 8.5.1 + vite 6 already resolve secure transitive deps, so the overrides were unneeded (and forcing esbuild globally broke vite's transform) - CI: pnpm/action-setup → oven-sh/setup-bun; the playground job is now a real gate (the Vite app builds green under bun) Fixes surfaced by bun's stricter resolution: - packages/react declared "tempus": "workspace:tempus*" (a pnpm-ism bun can't parse) → "workspace:*" - removed a dead `export * from './src/types'` re-exporting an empty (0-byte) packages/react/src/types.ts; deleted the file - playground tsconfig: add `tempus*` paths (so tsc resolves types from source, mirroring the vite alias) + @types/node for vite.config.ts - vite build target → esnext (avoids esbuild lowering destructuring-with- defaults in profiler.ts to a legacy target) Audit: 23 advisories on main → 1 low remaining (esbuild dev-server file-read, Windows-only, dev-only — never reaches the zero-dep published library). Verified: bun install --frozen-lockfile, build, lint, playground build all green; core bundle byte-identical (1985 B gz).
6 tasks
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
Standardizes tempus on bun + biome, removing pnpm/npm — matching hamo, so the darkroom libs share one toolchain (no eslint/prettier/npm/pnpm fragmentation). Biome was already wired (eslint/prettier were deleted earlier); this swaps the package manager.
Stacked on #20 (Vite playground) — base is
chore/vite-playground. GitHub will retarget this tomainautomatically once #20 merges. Review/merge #20 first.Summary
Package manager
pnpm-lock.yaml+pnpm-workspace.yaml→bun.lock+ aworkspacesfieldpnpm→bun run/bun --filter;npm version→bun pm version(supports--preid/--no-git-tag-version);npm publish→bun publishdevnow runs the playground (it HMRs againstpackages/source via the Vite alias, so the tsup watch isn't needed for demo work);dev:buildstays for bundle-watchingpnpm.overridesblock — under bun, tsup 8.5.1 + Vite 6 already resolve secure transitive deps; forcing esbuild globally actually broke Vite's transformpnpm/action-setup→oven-sh/setup-bun; the playground job is now a real gate (the Vite app builds green under bun)Fixes surfaced by bun's stricter resolution
packages/reactdeclared"tempus": "workspace:tempus*"(a pnpm-ism bun can't parse) →workspace:*export * from './src/types'that re-exported an empty 0-byte file; deleted the filetempus*paths sotscresolves types from source (mirrors the Vite alias) +@types/nodeforvite.config.tstarget: 'esnext'(avoids esbuild lowering destructuring-with-defaults inprofiler.ts)Result
Test Plan
bun install --frozen-lockfilecleanbun run build(library) — 10 builds, dist intactbun run lint(biome) passesbun --filter playground buildgreenbun audit→ 1 low (documented)