Corepack
Hinzugefügt in: v16.9.0, v14.19.0
[Stabil: 1 - Experimentell]
Stabil: 1 Stabilität: 1 - Experimentell
Corepack ist ein experimentelles Tool zur Verwaltung von Versionen Ihrer Paketmanager. Es stellt binäre Proxys für jeden unterstützten Paketmanager bereit, die bei Aufruf den für das aktuelle Projekt konfigurierten Paketmanager identifizieren, ihn bei Bedarf herunterladen und schließlich ausführen.
Obwohl Corepack standardmäßig mit Node.js-Installationen ausgeliefert wird, sind die von Corepack verwalteten Paketmanager nicht Teil der Node.js-Distribution und:
- Bei der ersten Verwendung lädt Corepack die neueste Version aus dem Netzwerk herunter.
- Alle erforderlichen Updates (in Bezug auf Sicherheitslücken oder anderweitig) fallen nicht in den Verantwortungsbereich des Node.js-Projekts. Endbenutzer müssen gegebenenfalls selbst herausfinden, wie sie Updates durchführen.
Dieses Feature vereinfacht zwei Kernarbeitsabläufe:
- Es erleichtert die Onboarding neuer Mitarbeiter, da sie keine systemspezifischen Installationsprozesse mehr befolgen müssen, nur um den gewünschten Paketmanager zu erhalten.
- Es ermöglicht Ihnen sicherzustellen, dass jeder in Ihrem Team genau die von Ihnen beabsichtigte Paketmanager-Version verwendet, ohne dass diese jedes Mal manuell synchronisiert werden muss, wenn ein Update erforderlich ist.
Arbeitsabläufe
Aktivieren des Features
Aufgrund seines experimentellen Status muss Corepack derzeit explizit aktiviert werden, um eine Wirkung zu erzielen. Führen Sie dazu corepack enable
aus, wodurch die Symlinks in Ihrer Umgebung neben dem node
-Binary eingerichtet werden (und vorhandene Symlinks gegebenenfalls überschrieben werden).
Von diesem Zeitpunkt an funktioniert jeder Aufruf der unterstützten Binaries ohne weitere Einrichtung. Sollten Probleme auftreten, führen Sie corepack disable
aus, um die Proxys von Ihrem System zu entfernen (und erwägen Sie, ein Issue im Corepack-Repository zu eröffnen, um uns darüber zu informieren).
Konfiguration eines Pakets
Die Corepack-Proxies finden die nächstgelegene package.json
-Datei in Ihrer aktuellen Verzeichnishierarchie, um deren "packageManager"
-Eigenschaft zu extrahieren.
Wenn der Wert mit einem unterstützten Paketmanager übereinstimmt, stellt Corepack sicher, dass alle Aufrufe der relevanten Binärdateien mit der angeforderten Version ausgeführt werden. Dabei wird diese bei Bedarf nach Bedarf heruntergeladen und der Vorgang abgebrochen, wenn sie nicht erfolgreich abgerufen werden kann.
Sie können corepack use
verwenden, um Corepack aufzufordern, Ihre lokale package.json
so zu aktualisieren, dass der Paketmanager Ihrer Wahl verwendet wird:
corepack use # setzt die neueste 7.x Version in der package.json
corepack use yarn@* # setzt die neueste Version in der package.json
Aktualisierung der globalen Versionen
Wenn Corepack außerhalb eines bestehenden Projekts ausgeführt wird (z. B. bei der Ausführung von yarn init
), verwendet Corepack standardmäßig vordefinierte Versionen, die ungefähr den neuesten stabilen Versionen der einzelnen Tools entsprechen. Diese Versionen können durch Ausführen des Befehls corepack install
zusammen mit der Paketmanager-Version, die Sie einstellen möchten, überschrieben werden:
corepack install --global
Alternativ kann ein Tag oder ein Bereich verwendet werden:
corepack install --global pnpm@*
corepack install --global yarn@stable
Offline-Workflow
Viele Produktionsumgebungen haben keinen Netzwerkzugriff. Da Corepack die Paketmanager-Releases normalerweise direkt von ihren Registern herunterlädt, kann dies mit solchen Umgebungen in Konflikt stehen. Um dies zu vermeiden, rufen Sie den Befehl corepack pack
auf, solange Sie noch Netzwerkzugriff haben (normalerweise gleichzeitig mit der Vorbereitung Ihres Deployment-Images). Dies stellt sicher, dass die benötigten Paketmanager auch ohne Netzwerkzugriff verfügbar sind.
Der Befehl pack
verfügt über verschiedene Flags. Weitere Informationen finden Sie in der detaillierten Corepack-Dokumentation.
Unterstützte Paketmanager
Die folgenden Binärdateien werden über Corepack bereitgestellt:
Paketmanager | Binärnamen |
---|---|
Yarn | yarn , yarnpkg |
pnpm | pnpm , pnpx |
Häufige Fragen
Wie interagiert Corepack mit npm?
Obwohl Corepack npm wie jeden anderen Paketmanager unterstützen könnte, sind seine Shims nicht standardmäßig aktiviert. Dies hat einige Konsequenzen:
- Es ist immer möglich, einen
npm
-Befehl innerhalb eines Projekts auszuführen, das für die Verwendung mit einem anderen Paketmanager konfiguriert ist, da Corepack ihn nicht abfangen kann. - Obwohl
npm
eine gültige Option in der"packageManager"
-Eigenschaft ist, führt das Fehlen eines Shims dazu, dass das globale npm verwendet wird.
npm install -g yarn
funktioniert nicht
npm verhindert das versehentliche Überschreiben der Corepack-Binärdateien bei einer globalen Installation. Um dieses Problem zu vermeiden, ziehen Sie eine der folgenden Optionen in Betracht:
- Führen Sie diesen Befehl nicht aus; Corepack stellt die Paketmanager-Binärdateien ohnehin bereit und stellt sicher, dass die angeforderten Versionen immer verfügbar sind, daher ist die explizite Installation der Paketmanager nicht erforderlich.
- Fügen Sie die
--force
-Flag zunpm install
hinzu; dies teilt npm mit, dass es in Ordnung ist, Binärdateien zu überschreiben, aber Sie werden dabei die Corepack-Binärdateien löschen. (Führen Siecorepack enable
aus, um sie wieder hinzuzufügen.)