Bun Workspaces

Bun 73,307 reads npm-style workspaces from the root package.json and, like pnpm 69,400 , accepts workspace: and catalog: dependencies. The catalog goes inside the workspaces object: "workspaces": { "packages": ["packages/*"], "catalog": { "express": "^5.1.0", "pg": "^8.16.3" } }. With the same two packages as in Yarn Workspaces and pnpm Workspaces and Catalogs, install and test everything.

Installing a Bun workspace and running a script in every packageShell
cd ~/v5-ch1/bun-ws
bun install
readlink packages/api/node_modules/express
bun run --filter '*' test
Output
bun install v1.4.2 (744846f84)
...
80 packages installed [195.00ms]
../../../node_modules/.bun/express@5.2.1/node_modules/express
@booknest/catalog test: $24.00
@booknest/catalog test: Exited with code 0
@booknest/api test: $18.50
@booknest/api test: Exited with code 0

The symlink reveals a different layout from Bun Install. Since Bun 1.3.2, a new workspace defaults to the isolated linker: packages live in node_modules/.bun/name@version, and each workspace sees only its declared dependencies, exactly pnpm's design. Single-package projects keep the hoisted layout. Choose with --linker isolated or --linker hoisted, or linker under [install] in bunfig.toml. --filter runs packages in dependency order, which is why the catalog's test printed first.