Le gestionnaire de packages de Bun prend en charge les "workspaces" npm. Cela vous permet de diviser une base de code en plusieurs "packages" distincts qui vivent dans le même dépôt, peuvent dépendre les uns des autres et (si possible) partager un répertoire node_modules.
Clonez ce projet exemple pour expérimenter avec les workspaces.
Le package.json racine ne doit contenir aucune "dependencies", "devDependencies", etc. Chaque package individuel doit être autonome et déclarer ses propres dépendances. De même, il est conventionnel de déclarer "private": true pour éviter de publier accidentellement le package racine sur npm.
{
"name": "my-monorepo",
"private": true,
"workspaces": ["packages/*"]
}Il est courant de placer tous les packages dans un répertoire packages. Le champ "workspaces" dans package.json prend en charge les motifs glob, vous pouvez donc utiliser packages/* pour indiquer que chaque sous-répertoire de packages doit être considéré comme un package séparé (également connu sous le nom de workspace).
.
├── package.json
├── node_modules
└── packages
├── stuff-a
│ └── package.json
└── stuff-b
└── package.jsonPour ajouter des dépendances entre les workspaces, utilisez la syntaxe "workspace:*". Ici, nous ajoutons stuff-a comme dépendance de stuff-b.
{
"name": "stuff-b",
"dependencies": {
"stuff-a": "workspace:*"
}
}Une fois ajouté, exécutez bun install depuis la racine du projet pour installer les dépendances pour tous les workspaces.
bun installPour ajouter des dépendances npm à un workspace particulier, faites simplement cd dans le répertoire approprié et exécutez les commandes bun add comme vous le feriez normalement. Bun détectera que vous êtes dans un workspace et hissera la dépendance si nécessaire.
cd packages/stuff-a
bun add zodConsultez Docs > Gestionnaire de packages pour la documentation complète du gestionnaire de packages de Bun.