Cada pacote fica guardado uma vez só no seu computador: dez projetos usando o mesmo React ocupam o espaço de um.
Node 22+
Cada quadradinho é um pedaço do que está guardado no seu computador. Azul é arquivo novo. Claro é arquivo que já estava lá.
Instala o projeto. Só baixa o que ainda não está guardado na sua máquina.
Nada é reescrito no caminho, teu arquivo que chega no seu projeto é igualzinho ao que o npm publicou.
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ ╔══════════════════════╗
│ 1. LÊ A LISTA │ ──▶ │ 2. BAIXA │ ──▶ │ 3. IDENTIFICA │ ──▶ ║4. GUARDA NUM LUGAR SÓ║
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘ ╚══════════════════════╝
descobre de quais baixa só o que ainda dá uma impressão uma pasta na sua
pacotes o projeto não tem e confere se digital pra cada máquina, usada por
precisa veio inteiro arquivo: dois iguais todos os projetos
têm a mesma digital
│
┌─────────────────────────────────────┬─────────────────────────────────────┬──────┘
▼ ▼ ▼
projeto A projeto B projeto C
node_modules node_modules node_modules
ocupa ~0 ocupa ~0 ocupa ~0
Cinco projetos parecidos saíram de 2300 MB para 478 MB. O React que todos eles usam ocupa o espaço de um.
Trocou de branch, clonou de novo, apagou a pasta: volta na hora, sem baixar nada da internet.
Mesmo package.json, mesmo lockfile, mesma pasta. Muda só onde os arquivos ficam guardados.
| Situação | npm | brixel | Δ |
|---|---|---|---|
| 1 projeto, sem nada pra repetir | 460 MB | 171 MB | −63% |
| 5 projetos que usam os mesmos pacotes | 2300 MB | 478 MB | −79% |
| 4 projetos bem diferentes entre si | 1725 MB | 1106 MB | −35% |
| Tempo pra instalar mais um projeto | 5,7 s | 4,4 s | — |
| Tempo pra remontar 22 mil arquivos | — | 4,1 s | — |