Skip to content

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

  1. Quando esegui comandi JavaScript (come node, npm o binari di pacchetti), gli shim di Volta intercettano il comando
  2. Volta controlla la tua directory corrente per vedere se sei in un progetto con versioni di strumenti fissate
  3. Se lo sei, Volta usa le versioni fissate nel package.json di quel progetto
  4. 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):

json
{
  "volta": {
    "node": "14.19.1",
    "npm": "6.14.16"
  }
}

Progetto B (~/projects/project-b/package.json):

json
{
  "volta": {
    "node": "16.14.2",
    "npm": "8.5.0"
  }
}

Il tuo flusso di lavoro potrebbe essere così:

bash
# 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:

  1. Se il binario esiste nel node_modules/.bin/ del progetto, Volta usa quella versione
  2. Se non esiste, ma il pacchetto è installato globalmente tramite Volta, usa quella versione
  3. 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 suo package.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é