Skip to content

Changer entre projets

L'un des principaux avantages de Volta est qu'il gère sans problème différentes versions d'outils à travers différents projets. Cette page explique comment Volta gère automatiquement votre environnement JavaScript quand vous vous déplacez entre projets.

Changement de version automatique

Contrairement à d'autres gestionnaires de version qui exigent que vous basculiez manuellement entre les versions d'outils, Volta gère cela automatiquement basé sur votre répertoire actuel.

Comment ça fonctionne

  1. Quand vous exécutez une commande JavaScript (comme node, npm, ou un binaire de paquet), les shims de Volta interceptent la commande
  2. Volta vérifie votre répertoire actuel pour voir si vous êtes dans un projet avec des versions d'outils épinglées
  3. Si oui, Volta utilise les versions épinglées du package.json de ce projet
  4. Si vous n'êtes pas dans un projet avec des versions épinglées, Volta utilise vos outils par défaut

Tout cela se passe de manière transparente, sans aucune commande supplémentaire.

Exemple de flux de travail

Imaginez que vous ayez deux projets avec différentes exigences Node.js :

Projet A (~/projects/project-a/package.json) :

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

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

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

Votre flux de travail pourrait ressembler à ceci :

bash
# Dans le projet A
cd ~/projects/project-a
node --version  # Affiche v14.19.1
npm --version   # Affiche v6.14.16

# Basculer vers le projet B
cd ~/projects/project-b
node --version  # Affiche automatiquement v16.14.2
npm --version   # Affiche automatiquement v8.5.0

# En dehors de tout projet
cd ~
node --version  # Affiche votre version Node par défaut

Projets imbriqués

Si vous avez des projets imbriqués, Volta utilisera les versions d'outils du package.json le plus proche qui a une section volta.

Par exemple :

/parent-project/package.json (avec section volta, node@14)
/parent-project/child-project/package.json (avec section volta, node@16)
/parent-project/other-directory/ (pas de package.json)

Si vous exécutez des commandes dans :

  • /parent-project/child-project/ - Volta utilise Node.js 16
  • /parent-project/other-directory/ - Volta utilise Node.js 14
  • /parent-project/ - Volta utilise Node.js 14

Binaires de paquets

Le basculement automatique de Volta fonctionne également pour les binaires de paquets. Par exemple, si vous avez une version spécifique au projet de TypeScript et exécutez tsc, Volta s'assure d'utiliser la bonne version.

Paquets globaux vs locaux

Quand vous exécutez un binaire de paquet :

  1. Si le binaire existe dans le node_modules/.bin/ du projet, Volta utilise cette version
  2. S'il n'existe pas, mais que le paquet est installé globalement via Volta, il utilise cette version
  3. Sinon, il affiche une erreur de commande non trouvée

Dépannage

Si vous rencontrez des problèmes avec le changement de version :

  • Vérifiez que votre projet a une section volta dans son package.json
  • Exécutez volta list all pour vérifier vos outils installés
  • Vérifiez que les outils dont vous avez besoin sont épinglés à votre projet ou installés comme versions par défaut
  • Exécutez volta which node pour voir quelle version de Node.js Volta utilise et pourquoi