| --- |
| summary: "Bun workflow (experimental): installs and gotchas vs pnpm" |
| read_when: |
| - You want the fastest local dev loop (bun + watch) |
| - You hit Bun install/patch/lifecycle script issues |
| title: "Bun (Experimental)" |
| --- |
| |
| # Bun (experimental) |
|
|
| Goal: run this repo with **Bun** (optional, not recommended for WhatsApp/Telegram) |
| without diverging from pnpm workflows. |
|
|
| ⚠️ **Not recommended for Gateway runtime** (WhatsApp/Telegram bugs). Use Node for production. |
|
|
| ## Status |
|
|
| - Bun is an optional local runtime for running TypeScript directly (`bun run …`, `bun --watch …`). |
| - `pnpm` is the default for builds and remains fully supported (and used by some docs tooling). |
| - Bun cannot use `pnpm-lock.yaml` and will ignore it. |
|
|
| ## Install |
|
|
| Default: |
|
|
| ```sh |
| bun install |
| ``` |
|
|
| Note: `bun.lock`/`bun.lockb` are gitignored, so there’s no repo churn either way. If you want _no lockfile writes_: |
|
|
| ```sh |
| bun install --no-save |
| ``` |
|
|
| ## Build / Test (Bun) |
|
|
| ```sh |
| bun run build |
| bun run vitest run |
| ``` |
|
|
| ## Bun lifecycle scripts (blocked by default) |
|
|
| Bun may block dependency lifecycle scripts unless explicitly trusted (`bun pm untrusted` / `bun pm trust`). |
| For this repo, the commonly blocked scripts are not required: |
|
|
| - `@whiskeysockets/baileys` `preinstall`: checks Node major >= 20 (OpenClaw defaults to Node 24 and still supports Node 22 LTS, currently `22.16+`). |
| - `protobufjs` `postinstall`: emits warnings about incompatible version schemes (no build artifacts). |
|
|
| If you hit a real runtime issue that requires these scripts, trust them explicitly: |
|
|
| ```sh |
| bun pm trust @whiskeysockets/baileys protobufjs |
| ``` |
|
|
| ## Caveats |
|
|
| - Some scripts still hardcode pnpm (e.g. `docs:build`, `ui:*`, `protocol:check`). Run those via pnpm for now. |
|
|