Skip to content

Arbeitsbereiche

Details darüber, wie Volta in einer Workspace-Umgebung verwendet wird, wo es mehrere Projekte in einem einzigen Repository gibt und sie alle Volta-Einstellungen teilen möchten.

TIP

Diese Funktion wurde in Volta 0.8.2 hinzugefügt, sie funktioniert nicht bei früheren Versionen.

Erweitern der Konfiguration

Innerhalb des "volta"-Abschnitts in der package.json können Sie einen Eintrag mit dem Schlüssel "extends" angeben. Der Wert dieses Eintrags sollte ein Pfad zu einer anderen JSON-Datei sein, die ebenfalls einen "volta"-Abschnitt hat. Relative Pfade werden relativ zu der Datei aufgelöst, in der sie gesetzt sind. Alle Volta-Einstellungen (z.B. "node"- oder "yarn"-Versionen) werden mit denen aus der Datei zusammengeführt, auf die "extends" verweist, wobei die aktuelle Datei Vorrang hat. Wenn Sie also eine einzige Node-Version für alle Ihre Projekte haben möchten, würden Sie diese Versionen im Root setzen, und dann würde jedes Projekt nur "extends": "../path/to/root/package.json" benötigen.

Beispiele

Bei der folgenden Ordnerstruktur und package.json-Inhalten:

.
├── package.json
└── packages
    ├── cli
    │   └── package.json
    └── utils
        └── package.json
  • package.json
json
{
  "volta": {
    "node": "12.16.1",
    "yarn": "1.22.4"
  }
}
  • packages/cli/package.json
json
{
  "volta": {
    "extends": "../../package.json"
  }
}
  • packages/utils/package.json
json
{
  "volta": {
    "extends": "../../package.json"
  }
}

Das Ausführen von node irgendwo im Workspace würde dazu führen, dass Sie Node 12.16.1 verwenden. Und wenn Sie diese Version in der Root-package.json aktualisieren, wird sie automatisch in allen Projekten verwendet, ohne die Einstellungen in jedem Unterprojekt duplizieren zu müssen.

Tools festlegen

Wenn Sie volta pin ausführen, um eine Version eines Tools innerhalb eines Workspace auszuwählen, wird Volta diese Einstellungen immer zur nächstgelegenen package.json hinzufügen, die es findet. Im obigen Beispiel würde, wenn Sie volta pin node@14 innerhalb des packages/utils-Unterprojekts ausführen, die neue Version von Node in packages/utils/package.json geschrieben und nur auf das utils-Unterprojekt angewendet werden, nicht auf die anderen. Dies ermöglicht es Ihnen, die Tool-Versionen pro Projekt einfach anzupassen.

Wenn Sie volta pin verwenden möchten, um eine Änderung an der Root-Konfiguration vorzunehmen, wechseln Sie zuerst mit cd in das Workspace-Root-Verzeichnis und führen Sie dann volta pin von dort aus.

Hooks

Wenn Ihr Projekt Project-Hooks verwendet, können Sie diese entweder in einem .volta-Verzeichnis in einem Unterprojekt oder in einem .volta-Verzeichnis im Root platzieren. Volta wird an jedem Ort nach Hooks suchen, auf den ein "extends"-Schlüssel verweist, sodass die Einstellungen auf jeder benötigten Ebene angepasst werden können.

Projektlokale Binärdateien

Zusätzlich zur Suche nach Hooks auf jeder Ebene wird Volta auch auf jeder Ebene suchen, um projektlokale Abhängigkeiten zu erkennen, die beim Ausführen eines Drittanbieter-Tools verwendet werden sollen. Es wird versuchen, sie in node_modules/.bin relativ zu jeder Datei zu finden, auf die "extends" verweist.