Skip to content

Switch the package manager from pnpm to Bun 1.4 - #18

Merged
bmdavis419 merged 1 commit into
mainfrom
cursor/pnpm-to-bun-d187
Aug 21, 2026
Merged

Switch the package manager from pnpm to Bun 1.4#18
bmdavis419 merged 1 commit into
mainfrom
cursor/pnpm-to-bun-d187

Conversation

@bmdavis419

@bmdavis419 bmdavis419 commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Switch this repo from pnpm 11 to Bun 1.4.0, the current stable release.

What changed

  • Root packageManager is now bun@1.4.0, with workspaces in package.json instead of pnpm-workspace.yaml
  • pnpm-lock.yaml is gone; bun.lock is the lockfile
  • Root and package scripts, scripts/release.sh, and scripts/create-local-key.mjs call bun / bun x
  • CLI release workflow uses oven-sh/setup-bun and bun install --frozen-lockfile
  • README, release docs, and agent skills use the bun commands
  • A root postinstall chmods @effect/tsgo's lib/tsc on Linux, which is still shipped without the executable bit

How to run things now

  • bun install
  • bun check / bun run test / bun release
  • bun adrive … for the repo CLI
  • Wrangler from apps/web: cd apps/web && bun x wrangler …

bun test is Bun's own runner, so the workspace Vitest suite is bun run test.

Node 26 is still required. The published CLI bundle stays a Node script.

Verified locally on Bun 1.4.0 / Node 26.7.0

  • bun install --frozen-lockfile (356 installs, lockfile unchanged)
  • bun run format:check
  • bun run check (shared, CLI, web, plus forbidden-pattern scan)
  • bun run test (225 tests: 16 shared, 192 web, 17 CLI)
  • bun adrive --version and bun --filter @adrive/cli build
  • bun audit --prod (no vulnerabilities)
Open in Web Open in Cursor 

Note

Switch package manager from pnpm to bun 1.4

  • Migrates workspace scripts, local commands, CI workflows, and documentation from pnpm to bun.
  • Adds bun.lock, sets engines.bun to >=1.4.0, and defines the workspaces array in package.json.
  • Updates cli-release.yml to use oven-sh/setup-bun and runs checks, tests, and builds via bun run.
  • Risk: Local environments and CI require Bun 1.4+; packageManager in package.json now specifies bun@1.4.0 instead of pnpm@11.10.0.

Macroscope summarized cb2e73d.

Greptile Summary

This change replaces pnpm with Bun 1.4 across workspace configuration, local commands, release automation, CI, and documentation. It also adds an install-time executable permission repair for the Effect TypeScript compiler.

No defects were confirmed.

T-Rex validation blocked

The required package manager runtime is missing: only Bun 1.3.14 is available, while the project requires Bun 1.4 or newer. The available version rejects bun.lock lockfileVersion 2 before dependencies can install, so installation, postinstall, workspace checks, tests, and CLI build validation could not run under a supported Bun version. The same frozen-install control completed successfully on the base revision with the available runtime.

Confidence Score: 5/5

No confirmed product defect blocks merging this migration.

No final findings were emitted. The package-manager migration could not be exercised with Bun 1.4 or newer because that required runtime is unavailable.

Files Needing Attention: When Bun 1.4 or newer is available, validate bun.lock, the root package.json scripts and postinstall hook, apps/web/package.json, packages/cli/package.json, and .github/workflows/cli-release.yml with a fresh frozen install and the full check, test, and release-build commands.

T-Rex T-Rex Logs

What T-Rex did

  • Base control verified that Bun 1.3.14 can perform a frozen install after migrating the base pnpm lockfile.
  • Base commit frozen install succeeds on Bun 1.3.14 after the lockfile migration, establishing the baseline for comparison against the PR revision.
  • PR reproduction showed the PR revision exits with Unknown lockfile version at bun.lock:2 and blocks progress under --frozen-lockfile.
  • Validation shows the runtime constraint: package.json requires Bun >= 1.4.0, and no compatible Bun runtime was available to run the migration, postinstall, checks, tests, or CLI release build.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "Switch the package manager from pnpm to ..." | Re-trigger Greptile

Pin bun@1.4.0, replace the pnpm workspace and lockfile with bun workspaces and bun.lock, and update scripts, CI, and docs to match.

Co-authored-by: Ben Davis <bmdavis419@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The repository migrated package management and command execution from pnpm to Bun. CI, release scripts, local tooling, workspace scripts, deployment skills, and documentation now use Bun 1.4 commands.

Changes

Bun migration

Layer / File(s) Summary
Bun runtime and workspace configuration
package.json, apps/web/package.json, packages/cli/package.json, .prettierignore, .gitignore, pnpm-workspace.yaml
Root and package scripts now use Bun. Bun 1.4.0 is required, workspace globs are declared, and pnpm-specific workspace and ignore configuration is removed.
Release automation and local command execution
.github/workflows/cli-release.yml, scripts/release.sh, scripts/create-local-key.mjs
CI installation, checks, builds, bundle tests, releases, Wrangler operations, and local key creation now invoke Bun.
Development and deployment guidance
README.md, docs/*.md, .agents/skills/*, apps/web/wrangler.jsonc
Development, deployment, CLI, audit, release, and provisioning instructions now use Bun commands.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2 files. (12 skipped: 12 unsupported.)
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely identifies the primary change from pnpm to Bun 1.4.
Description check ✅ Passed The description directly explains the package-manager migration and its effects across configuration, scripts, CI, documentation, and validation.

Comment @coderabbitai help to get the list of available commands.

@bmdavis419
bmdavis419 marked this pull request as ready for review August 21, 2026 04:11

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

coderabbitai[bot]