57 lines
1.8 KiB
Markdown
57 lines
1.8 KiB
Markdown
# Bun (optional)
|
|
|
|
Goal: allow running this repo with Bun without maintaining a Bun lockfile or losing pnpm patch behavior.
|
|
|
|
## Status
|
|
|
|
- pnpm remains the primary package manager/runtime for this repo.
|
|
- Bun can be used for local installs/builds/tests, but Bun currently **cannot use** `pnpm-lock.yaml` and will ignore it.
|
|
|
|
## Install (no Bun lockfile)
|
|
|
|
Use Bun without writing `bun.lock`/`bun.lockb`:
|
|
|
|
```sh
|
|
bun install --no-save
|
|
```
|
|
|
|
This avoids maintaining two lockfiles. (`bun.lock`/`bun.lockb` are gitignored.)
|
|
|
|
## Build / Test (Bun)
|
|
|
|
```sh
|
|
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 does not support pnpm patches, so we apply them in `postinstall` when Bun is detected:
|
|
|
|
- `scripts/postinstall.js` runs only for Bun installs and applies every entry from `package.json#pnpm.patchedDependencies` into `node_modules/...` using `git apply` (idempotent).
|
|
|
|
To add a new patch that works in both pnpm + Bun:
|
|
|
|
1. Add an entry to `package.json#pnpm.patchedDependencies`
|
|
2. Add the patch file under `patches/`
|
|
3. Run `pnpm install` (updates `pnpm-lock.yaml` patch 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/baileys` `preinstall`: checks Node major >= 20 (we run Node 22+).
|
|
- `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.
|