2.5 KiB
summary, read_when
| summary | read_when | ||
|---|---|---|---|
| Bun workflow (experimental): installs, patches, and gotchas vs pnpm |
|
Bun (experimental)
Goal: run this repo with Bun (optional, not recommended for WhatsApp/Telegram) without losing pnpm patch behavior.
⚠️ 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 …). pnpmis the default for builds and remains fully supported (and used by some docs tooling).- Bun cannot use
pnpm-lock.yamland will ignore it.
Install
Default:
bun install
Note: bun.lock/bun.lockb are gitignored, so there’s no repo churn either way. If you want no lockfile writes:
bun install --no-save
Build / Test (Bun)
bun run build
bun run vitest run
pnpm patchedDependencies under Bun
pnpm supports package.json#pnpm.patchedDependencies and records it in pnpm-lock.yaml.
Bun (and npm/yarn) do not support pnpm patches, so we apply them in postinstall when pnpm is not the installer:
scripts/postinstall.jsdetects the package manager vianpm_config_user_agentand applies every entry frompackage.json#pnpm.patchedDependenciesintonode_modules/...using a built-in JS patcher (nogit/systempatchdependency).- Under pnpm, this fallback is skipped because pnpm already applies
patchedDependenciesitself.
To add a new patch that works in both pnpm + Bun:
- Add an entry to
package.json#pnpm.patchedDependencies - Add the patch file under
patches/ - Run
pnpm install(updatespnpm-lock.yamlpatch hash)
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/baileyspreinstall: checks Node major >= 20 (we run Node 22+).protobufjspostinstall: emits warnings about incompatible version schemes (no build artifacts).
If you hit a real runtime issue that requires these scripts, trust them explicitly:
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.