Zwischen Projekten wechseln
Einer der Hauptvorteile von Volta ist der nahtlose Umgang mit verschiedenen Tool-Versionen über Projekte hinweg. Diese Seite erklärt, wie Volta automatisch Ihre JavaScript-Umgebung verwaltet, während Sie zwischen Projekten wechseln.
Automatisches Versionswechseln
Im Gegensatz zu anderen Versionsmanagern, die erfordern, dass Sie manuell zwischen Tool-Versionen wechseln, handhabt Volta dies automatisch basierend auf Ihrem aktuellen Verzeichnis.
Wie es funktioniert
- Wenn Sie einen JavaScript-Befehl ausführen (wie
node
,npm
oder eine Paket-Binärdatei), fängt Voltas Shim den Befehl ab - Volta überprüft Ihr aktuelles Verzeichnis, um zu sehen, ob Sie sich in einem Projekt mit festgelegten Tool-Versionen befinden
- Wenn ja, verwendet Volta die festgelegten Versionen aus der
package.json
dieses Projekts - Wenn Sie sich nicht in einem Projekt mit festgelegten Versionen befinden, verwendet Volta Ihre Standard-Tools
All dies geschieht transparent ohne zusätzliche Befehle.
Beispiel-Workflow
Stellen Sie sich vor, Sie haben zwei Projekte mit unterschiedlichen Node.js-Anforderungen:
Projekt A (~/projects/project-a/package.json
):
{
"volta": {
"node": "14.19.1",
"npm": "6.14.16"
}
}
Projekt B (~/projects/project-b/package.json
):
{
"volta": {
"node": "16.14.2",
"npm": "8.5.0"
}
}
Ihr Workflow könnte so aussehen:
# In Projekt A
cd ~/projects/project-a
node --version # Zeigt v14.19.1
npm --version # Zeigt v6.14.16
# Wechsel zu Projekt B
cd ~/projects/project-b
node --version # Zeigt automatisch v16.14.2
npm --version # Zeigt automatisch v8.5.0
# Außerhalb eines Projekts
cd ~
node --version # Zeigt Ihre Standard-Node-Version
Verschachtelte Projekte
Wenn Sie verschachtelte Projekte haben, verwendet Volta die Tool-Versionen aus der nächstgelegenen package.json
mit einem volta
-Abschnitt.
Zum Beispiel:
/parent-project/package.json (hat volta-Abschnitt mit node@14)
/parent-project/child-project/package.json (hat volta-Abschnitt mit node@16)
/parent-project/other-directory/ (keine package.json)
Wenn Sie Befehle ausführen in:
/parent-project/child-project/
- Volta verwendet Node.js 16/parent-project/other-directory/
- Volta verwendet Node.js 14/parent-project/
- Volta verwendet Node.js 14
Paket-Binärdateien
Voltas automatisches Wechseln gilt auch für Paket-Binärdateien. Wenn Sie beispielsweise eine projektspezifische Version von TypeScript haben und tsc
ausführen, stellt Volta sicher, dass die korrekte Version verwendet wird.
Globale vs. lokale Pakete
Wenn Sie eine Paket-Binärdatei ausführen:
- Wenn die Binärdatei in den
node_modules/.bin/
Ihres Projekts existiert, verwendet Volta diese Version - Wenn nicht, aber das Paket global über Volta installiert ist, verwendet es diese Version
- Andernfalls zeigt es einen Fehler an, dass der Befehl nicht gefunden wurde
Fehlerbehebung
Wenn Sie Probleme mit dem Versionswechseln haben:
- Überprüfen Sie, dass Ihr Projekt einen
volta
-Abschnitt in seinerpackage.json
hat - Führen Sie
volta list all
aus, um Ihre installierten Tools zu überprüfen - Überprüfen Sie, dass die Tools, die Sie benötigen, entweder an Ihr Projekt gebunden oder als Standardversionen installiert sind
- Führen Sie
volta which node
aus, um zu sehen, welche Version von Node.js Volta verwendet und warum