skills/bun-guides-install-workspaces/SKILL.md
Configuring a monorepo using workspaces
npx skillsauth add jarle/bun-skills Bun Configuring a monorepo using workspacesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Bun's package manager supports npm "workspaces". This allows you to split a codebase into multiple distinct "packages" that live in the same repository, can depend on each other, and (when possible) share a node_modules directory.
Clone this sample project to experiment with workspaces.
The root package.json should not contain any "dependencies", "devDependencies", etc. Each individual package should be self-contained and declare its own dependencies. Similarly, it's conventional to declare "private": true to avoid accidentally publishing the root package to npm.
{
"name": "my-monorepo",
"private": true,
"workspaces": ["packages/*"]
}
It's common to place all packages in a packages directory. The "workspaces" field in package.json supports glob patterns, so you can use packages/* to indicate that each subdirectory of packages should be considered separate package (also known as a workspace).
.
├── package.json
├── node_modules
└── packages
├── stuff-a
│ └── package.json
└── stuff-b
└── package.json
To add dependencies between workspaces, use the "workspace:*" syntax. Here we're adding stuff-a as a dependency of stuff-b.
{
"name": "stuff-b",
"dependencies": {
"stuff-a": "workspace:*" // [!code ++]
}
}
Once added, run bun install from the project root to install dependencies for all workspaces.
bun install
To add npm dependencies to a particular workspace, just cd to the appropriate directory and run bun add commands as you would normally. Bun will detect that you are in a workspace and hoist the dependency as needed.
cd packages/stuff-a
bun add zod
See Docs > Package manager for complete documentation of Bun's package manager.
development
Using TypeScript with Bun, including type definitions and compiler options
development
Learn how to write tests using Bun's Jest-compatible API with support for async tests, timeouts, and various test modifiers
testing
Learn how to use snapshot testing in Bun to save and compare output between test runs
testing
Learn about Bun test's runtime integration, environment variables, timeouts, and error handling