Skip to content

Il package manager di Bun supporta i "workspaces" npm. Questo ti consente di dividere un codebase in più "pacchetti" distinti che vivono nello stesso repository, possono dipendere l'uno dall'altro e (quando possibile) condividere una directory node_modules.

Clona questo progetto di esempio per sperimentare con i workspace.


Il package.json root non dovrebbe contenere "dependencies", "devDependencies", ecc. Ogni singolo pacchetto dovrebbe essere autonomo e dichiarare le proprie dipendenze. Allo stesso modo, è convenzionale dichiarare "private": true per evitare di pubblicare accidentalmente il pacchetto root su npm.

json
{
  "name": "my-monorepo",
  "private": true,
  "workspaces": ["packages/*"]
}

È comune posizionare tutti i pacchetti in una directory packages. Il campo "workspaces" in package.json supporta pattern glob, quindi puoi usare packages/* per indicare che ogni sottodirectory di packages dovrebbe essere considerata un pacchetto separato (noto anche come workspace).

txt
.
├── package.json
├── node_modules
└── packages
    ├── stuff-a
    │   └── package.json
    └── stuff-b
        └── package.json

Per aggiungere dipendenze tra workspace, usa la sintassi "workspace:*". Qui stiamo aggiungendo stuff-a come dipendenza di stuff-b.

json
{
  "name": "stuff-b",
  "dependencies": {
    "stuff-a": "workspace:*"
  }
}

Una volta aggiunto, esegui bun install dalla root del progetto per installare le dipendenze per tutti i workspace.

sh
bun install

Per aggiungere dipendenze npm a un particolare workspace, basta cd nella directory appropriata ed eseguire i comandi bun add come faresti normalmente. Bun rileverà che sei in un workspace e solleverà la dipendenza secondo necessità.

sh
cd packages/stuff-a
bun add zod

Consulta Docs > Package manager per la documentazione completa del package manager di Bun.

Bun a cura di www.bunjs.com.cn