Cambiare tra progetti
Uno dei principali vantaggi di Volta è che gestisce senza problemi diverse versioni di strumenti in diversi progetti. Questa pagina spiega come Volta gestisce automaticamente il tuo ambiente JavaScript quando ti muovi tra progetti.
Cambio automatico di versione
A differenza di altri gestori di versioni che richiedono di cambiare manualmente tra versioni di strumenti, Volta gestisce questo automaticamente in base alla tua directory corrente.
Come funziona
- Quando esegui comandi JavaScript (come
node
,npm
o binari di pacchetti), gli shim di Volta intercettano il comando - Volta controlla la tua directory corrente per vedere se sei in un progetto con versioni di strumenti fissate
- Se lo sei, Volta usa le versioni fissate nel
package.json
di quel progetto - Se non sei in un progetto con versioni fissate, Volta usa i tuoi strumenti predefiniti
Tutto questo accade trasparentemente senza alcun comando aggiuntivo.
Esempio di flusso di lavoro
Immagina di avere due progetti con diversi requisiti di Node.js:
Progetto A (~/projects/project-a/package.json
):
{
"volta": {
"node": "14.19.1",
"npm": "6.14.16"
}
}
Progetto B (~/projects/project-b/package.json
):
{
"volta": {
"node": "16.14.2",
"npm": "8.5.0"
}
}
Il tuo flusso di lavoro potrebbe essere così:
# Nel progetto A
cd ~/projects/project-a
node --version # Mostra v14.19.1
npm --version # Mostra v6.14.16
# Passa al progetto B
cd ~/projects/project-b
node --version # Mostra automaticamente v16.14.2
npm --version # Mostra automaticamente v8.5.0
# Fuori da qualsiasi progetto
cd ~
node --version # Mostra la tua versione predefinita di Node
Progetti annidati
Se hai progetti annidati, Volta userà le versioni degli strumenti dal package.json
più vicino che ha una sezione volta
.
Per esempio:
/parent-project/package.json (ha sezione volta, node@14)
/parent-project/child-project/package.json (ha sezione volta, node@16)
/parent-project/other-directory/ (nessun package.json)
Se esegui comandi in:
/parent-project/child-project/
- Volta usa Node.js 16/parent-project/other-directory/
- Volta usa Node.js 14/parent-project/
- Volta usa Node.js 14
Binari di pacchetti
Il cambio automatico di Volta si applica anche ai binari di pacchetti. Per esempio, se hai una versione specifica del progetto di TypeScript ed esegui tsc
, Volta assicura che venga usata la versione corretta.
Pacchetti globali vs. locali
Quando esegui un binario di pacchetto:
- Se il binario esiste nel
node_modules/.bin/
del progetto, Volta usa quella versione - Se non esiste, ma il pacchetto è installato globalmente tramite Volta, usa quella versione
- Altrimenti, mostra un errore di comando non trovato
Risoluzione dei problemi
Se riscontri problemi con il cambio di versione:
- Verifica che il tuo progetto abbia una sezione
volta
nel suopackage.json
- Esegui
volta list all
per controllare gli strumenti che hai installato - Controlla se gli strumenti che ti servono sono fissati al tuo progetto o installati come versioni predefinite
- Esegui
volta which node
per vedere quale versione di Node.js sta usando Volta e perché