Skip to content

Commit 699aaf8

Browse files
vanceingallsclaude
andcommitted
build: migrate from pnpm to bun as package manager
Keep pnpm for publish workflow only (publishConfig overrides + provenance). Bun handles install, run, and exec for all other workflows. - Add workspaces field to root package.json for bun workspace support - Replace pnpm setup with oven-sh/setup-bun in CI and release workflows - Update all scripts to use bun run / bun run --filter / bunx - Replace npx with bunx in lefthook hooks - Update CONTRIBUTING.md with bun commands - Delete pnpm-lock.yaml, add bun.lock - Keep pnpm-workspace.yaml for publish workflow compatibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 8498317 commit 699aaf8

11 files changed

Lines changed: 1866 additions & 6766 deletions

File tree

.github/workflows/ci.yml

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,97 +16,79 @@ jobs:
1616
timeout-minutes: 10
1717
steps:
1818
- uses: actions/checkout@v4
19-
- uses: pnpm/action-setup@v4
20-
with:
21-
version: 10
19+
- uses: oven-sh/setup-bun@v2
2220
- uses: actions/setup-node@v4
2321
with:
2422
node-version: 22
25-
cache: pnpm
26-
- run: pnpm install --frozen-lockfile
27-
- run: pnpm build
23+
- run: bun install --frozen-lockfile
24+
- run: bun run build
2825

2926
lint-and-format:
3027
name: Lint & Format
3128
runs-on: ubuntu-latest
3229
timeout-minutes: 5
3330
steps:
3431
- uses: actions/checkout@v4
35-
- uses: pnpm/action-setup@v4
36-
with:
37-
version: 10
32+
- uses: oven-sh/setup-bun@v2
3833
- uses: actions/setup-node@v4
3934
with:
4035
node-version: 22
41-
cache: pnpm
42-
- run: pnpm install --frozen-lockfile
43-
- run: pnpm lint
44-
- run: pnpm format:check
36+
- run: bun install --frozen-lockfile
37+
- run: bun run lint
38+
- run: bun run format:check
4539

4640
typecheck:
4741
name: Typecheck
4842
runs-on: ubuntu-latest
4943
timeout-minutes: 10
5044
steps:
5145
- uses: actions/checkout@v4
52-
- uses: pnpm/action-setup@v4
53-
with:
54-
version: 10
46+
- uses: oven-sh/setup-bun@v2
5547
- uses: actions/setup-node@v4
5648
with:
5749
node-version: 22
58-
cache: pnpm
59-
- run: pnpm install --frozen-lockfile
60-
- run: pnpm build
61-
- run: pnpm -r typecheck
50+
- run: bun install --frozen-lockfile
51+
- run: bun run build
52+
- run: bun run --filter '*' typecheck
6253

6354
test-core:
6455
name: "Test: core"
6556
runs-on: ubuntu-latest
6657
timeout-minutes: 10
6758
steps:
6859
- uses: actions/checkout@v4
69-
- uses: pnpm/action-setup@v4
70-
with:
71-
version: 10
60+
- uses: oven-sh/setup-bun@v2
7261
- uses: actions/setup-node@v4
7362
with:
7463
node-version: 22
75-
cache: pnpm
76-
- run: pnpm install --frozen-lockfile
77-
- run: pnpm --filter @hyperframes/core test -- --coverage
64+
- run: bun install --frozen-lockfile
65+
- run: bun run --filter @hyperframes/core test -- --coverage
7866

7967
test-engine:
8068
name: "Test: engine"
8169
runs-on: ubuntu-latest
8270
timeout-minutes: 10
8371
steps:
8472
- uses: actions/checkout@v4
85-
- uses: pnpm/action-setup@v4
86-
with:
87-
version: 10
73+
- uses: oven-sh/setup-bun@v2
8874
- uses: actions/setup-node@v4
8975
with:
9076
node-version: 22
91-
cache: pnpm
92-
- run: pnpm install --frozen-lockfile
93-
- run: pnpm --filter @hyperframes/engine test
77+
- run: bun install --frozen-lockfile
78+
- run: bun run --filter @hyperframes/engine test
9479

9580
test-runtime-contract:
9681
name: "Test: runtime contract"
9782
runs-on: ubuntu-latest
9883
timeout-minutes: 10
9984
steps:
10085
- uses: actions/checkout@v4
101-
- uses: pnpm/action-setup@v4
102-
with:
103-
version: 10
86+
- uses: oven-sh/setup-bun@v2
10487
- uses: actions/setup-node@v4
10588
with:
10689
node-version: 22
107-
cache: pnpm
108-
- run: pnpm install --frozen-lockfile
109-
- run: pnpm --filter @hyperframes/core test:hyperframe-runtime-ci
90+
- run: bun install --frozen-lockfile
91+
- run: bun run --filter @hyperframes/core test:hyperframe-runtime-ci
11092

11193
semantic-pr-title:
11294
name: Semantic PR title

.github/workflows/release.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,14 @@ jobs:
1818
pull-requests: write
1919
steps:
2020
- uses: actions/checkout@v4
21-
- uses: pnpm/action-setup@v4
22-
with:
23-
version: 10
21+
- uses: oven-sh/setup-bun@v2
2422
- uses: actions/setup-node@v4
2523
with:
2624
node-version: 22
27-
cache: pnpm
28-
- run: pnpm install --frozen-lockfile
25+
- run: bun install --frozen-lockfile
2926

3027
- name: Bump versions
31-
run: pnpm set-version ${{ inputs.version }}
28+
run: bun run set-version ${{ inputs.version }}
3229

3330
- name: Create release PR
3431
env:

CONTRIBUTING.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,38 @@ Thanks for your interest in contributing to Hyperframes! This guide will help yo
66

77
1. Fork the repository
88
2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/hyperframes.git`
9-
3. Install dependencies: `pnpm install`
9+
3. Install dependencies: `bun install`
1010
4. Create a branch: `git checkout -b my-feature`
1111

1212
## Development
1313

1414
```bash
15-
pnpm install # Install all dependencies
16-
pnpm dev # Run the studio (composition editor)
17-
pnpm build # Build all packages
18-
pnpm -r typecheck # Type-check all packages
19-
pnpm lint # Lint all packages
20-
pnpm format:check # Check formatting
15+
bun install # Install all dependencies
16+
bun run dev # Run the studio (composition editor)
17+
bun run build # Build all packages
18+
bun run --filter '*' typecheck # Type-check all packages
19+
bun run lint # Lint all packages
20+
bun run format:check # Check formatting
2121
```
2222

2323
### Running Tests
2424

2525
```bash
26-
pnpm --filter @hyperframes/core test # Core unit tests (vitest)
27-
pnpm --filter @hyperframes/engine test # Engine unit tests (vitest)
28-
pnpm --filter @hyperframes/core test:hyperframe-runtime-ci # Runtime contract tests
26+
bun run --filter @hyperframes/core test # Core unit tests (vitest)
27+
bun run --filter @hyperframes/engine test # Engine unit tests (vitest)
28+
bun run --filter @hyperframes/core test:hyperframe-runtime-ci # Runtime contract tests
2929
```
3030

3131
### Linting & Formatting
3232

3333
```bash
34-
pnpm lint # Run oxlint
35-
pnpm lint:fix # Run oxlint with auto-fix
36-
pnpm format # Format all files with oxfmt
37-
pnpm format:check # Check formatting without writing
34+
bun run lint # Run oxlint
35+
bun run lint:fix # Run oxlint with auto-fix
36+
bun run format # Format all files with oxfmt
37+
bun run format:check # Check formatting without writing
3838
```
3939

40-
Git hooks (via [lefthook](https://github.com/evilmartians/lefthook)) run automatically after `pnpm install` and enforce linting + formatting on staged files before each commit.
40+
Git hooks (via [lefthook](https://github.com/evilmartians/lefthook)) run automatically after `bun install` and enforce linting + formatting on staged files before each commit.
4141

4242
## Pull Requests
4343

@@ -71,7 +71,7 @@ All packages use **fixed versioning** — every release bumps all packages to th
7171

7272
```bash
7373
# Bump versions, commit to a branch, create PR
74-
pnpm set-version 0.2.0
74+
bun run set-version 0.2.0
7575
git checkout -b release/v0.2.0
7676
git add packages/*/package.json
7777
git commit -m "chore: release v0.2.0"

0 commit comments

Comments
 (0)