Buns Package Manager unterstützt npm "workspaces". Dies ermöglicht es Ihnen, eine Codebasis in mehrere separate "Pakete" aufzuteilen, die im selben Repository leben, voneinander abhängen können und (wenn möglich) ein node_modules-Verzeichnis teilen.
Klonen Sie dieses Beispielprojekt, um mit Workspaces zu experimentieren.
Das root package.json sollte keine "dependencies", "devDependencies", etc. enthalten. Jedes einzelne Paket sollte in sich abgeschlossen sein und seine eigenen Abhängigkeiten deklarieren. Ebenso ist es üblich, "private": true zu deklarieren, um zu vermeiden, das root-Paket versehentlich auf npm zu veröffentlichen.
{
"name": "my-monorepo",
"private": true,
"workspaces": ["packages/*"]
}Es ist üblich, alle Pakete in einem packages-Verzeichnis zu platzieren. Das "workspaces"-Feld in package.json unterstützt Glob-Muster, sodass Sie packages/* verwenden können, um anzugeben, dass jedes Unterverzeichnis von packages als separates Paket (auch bekannt als Workspace) betrachtet werden soll.
.
├── package.json
├── node_modules
└── packages
├── stuff-a
│ └── package.json
└── stuff-b
└── package.jsonUm Abhängigkeiten zwischen Workspaces hinzuzufügen, verwenden Sie die "workspace:*"-Syntax. Hier fügen wir stuff-a als Abhängigkeit von stuff-b hinzu.
{
"name": "stuff-b",
"dependencies": {
"stuff-a": "workspace:*"
}
}Sobald dies hinzugefügt ist, führen Sie bun install vom Projektstamm aus, um Abhängigkeiten für alle Workspaces zu installieren.
bun installUm npm-Abhängigkeiten zu einem bestimmten Workspace hinzuzufügen, wechseln Sie einfach mit cd in das entsprechende Verzeichnis und führen Sie bun add-Befehle wie gewohnt aus. Bun erkennt, dass Sie sich in einem Workspace befinden, und hoisted die Abhängigkeit bei Bedarf.
cd packages/stuff-a
bun add zodSiehe Docs > Package Manager für vollständige Dokumentation von Buns Package Manager.