El gestor de paquetes de Bun soporta "workspaces" de npm. Esto te permite dividir una base de código en múltiples "paquetes" distintos que viven en el mismo repositorio, pueden depender unos de otros y (cuando es posible) compartir un directorio node_modules.
Clona este proyecto de ejemplo para experimentar con workspaces.
El package.json raíz no debe contener ningún "dependencies", "devDependencies", etc. Cada paquete individual debe ser autónomo y declarar sus propias dependencias. De manera similar, es convencional declarar "private": true para evitar publicar accidentalmente el paquete raíz en npm.
{
"name": "my-monorepo",
"private": true,
"workspaces": ["packages/*"]
}Es común colocar todos los paquetes en un directorio packages. El campo "workspaces" en package.json soporta patrones glob, por lo que puedes usar packages/* para indicar que cada subdirectorio de packages debe considerarse un paquete separado (también conocido como workspace).
.
├── package.json
├── node_modules
└── packages
├── stuff-a
│ └── package.json
└── stuff-b
└── package.jsonPara agregar dependencias entre workspaces, usa la sintaxis "workspace:*". Aquí estamos agregando stuff-a como una dependencia de stuff-b.
{
"name": "stuff-b",
"dependencies": {
"stuff-a": "workspace:*"
}
}Una vez agregado, ejecuta bun install desde la raíz del proyecto para instalar dependencias para todos los workspaces.
bun installPara agregar dependencias npm a un workspace en particular, solo haz cd al directorio apropiado y ejecuta comandos bun add como lo harías normalmente. Bun detectará que estás en un workspace y elevará la dependencia según sea necesario.
cd packages/stuff-a
bun add zodConsulta Documentación > Gestor de paquetes para la documentación completa del gestor de paquetes de Bun.