Skip to content

Corepack

Hinzugefügt in: v16.9.0, v14.19.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

Corepack ist ein experimentelles Tool, das bei der Verwaltung von Versionen Ihrer Paketmanager hilft. Es stellt binäre Proxys für jeden unterstützten Paketmanager bereit, die, wenn sie aufgerufen werden, ermitteln, welcher Paketmanager für das aktuelle Projekt konfiguriert ist, ihn bei Bedarf herunterladen und schließlich ausführen.

Obwohl Corepack mit Standardinstallationen von Node.js 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 (im Zusammenhang mit Sicherheitslücken oder anderweitig) fallen nicht in den Zuständigkeitsbereich des Node.js-Projekts. Bei Bedarf müssen die Endbenutzer selbst herausfinden, wie sie die Updates durchführen.

Diese Funktion vereinfacht zwei Kern-Workflows:

  • Sie erleichtert das Onboarding neuer Mitwirkender, da diese keine systemspezifischen Installationsprozesse mehr durchlaufen müssen, nur um den von Ihnen gewünschten Paketmanager zu haben.
  • Es ermöglicht Ihnen sicherzustellen, dass jeder in Ihrem Team genau die Paketmanager-Version verwendet, die Sie für ihn vorgesehen haben, ohne dass er diese jedes Mal manuell synchronisieren muss, wenn Sie ein Update durchführen müssen.

Workflows

Aktivieren der Funktion

Aufgrund seines experimentellen Status muss Corepack derzeit explizit aktiviert werden, um eine Wirkung zu erzielen. Führen Sie dazu corepack enable aus. Dadurch werden die Symlinks in Ihrer Umgebung neben der node-Binärdatei eingerichtet (und die vorhandenen Symlinks bei Bedarf überschrieben).

Ab diesem Zeitpunkt funktioniert jeder Aufruf der unterstützten Binärdateien ohne weitere Einrichtung. Sollten Sie ein Problem feststellen, führen Sie corepack disable aus, um die Proxys von Ihrem System zu entfernen (und erwägen Sie, ein Problem im Corepack-Repository zu eröffnen, um uns dies mitzuteilen).

Konfigurieren eines Pakets

Die Corepack-Proxys finden die nächste package.json-Datei in Ihrer aktuellen Verzeichnishierarchie, um deren "packageManager"-Eigenschaft zu extrahieren.

Wenn der Wert einem unterstützten Paketmanager entspricht, stellt Corepack sicher, dass alle Aufrufe der relevanten Binärdateien gegen die angeforderte Version ausgeführt werden, lädt sie bei Bedarf herunter und bricht ab, wenn sie nicht erfolgreich abgerufen werden kann.

Sie können corepack use verwenden, um Corepack aufzufordern, Ihre lokale package.json zu aktualisieren, um den Paketmanager Ihrer Wahl zu verwenden:

bash
corepack use  # setzt die neueste 7.x-Version in der package.json
corepack use yarn@* # setzt die neueste Version in der package.json

Aktualisieren der globalen Versionen

Wenn außerhalb eines bestehenden Projekts ausgeführt (z. B. beim Ausführen von yarn init), verwendet Corepack standardmäßig vordefinierte Versionen, die in etwa den neuesten stabilen Releases der einzelnen Tools entsprechen. Diese Versionen können überschrieben werden, indem Sie den Befehl corepack install zusammen mit der Paketmanager-Version ausführen, die Sie festlegen möchten:

bash
corepack install --global

Alternativ kann ein Tag oder ein Bereich verwendet werden:

bash
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 Registries herunterlädt, kann dies zu Konflikten mit solchen Umgebungen führen. Um dies zu vermeiden, rufen Sie den Befehl corepack pack auf, solange Sie noch Netzwerkzugriff haben (typischerweise gleichzeitig mit der Vorbereitung Ihres Deployment-Images). Dadurch wird sichergestellt, dass die erforderlichen Paketmanager auch ohne Netzwerkzugriff verfügbar sind.

Der pack-Befehl hat verschiedene Flags. Weitere Informationen finden Sie in der detaillierten Corepack-Dokumentation.

Unterstützte Paketmanager

Die folgenden Binärdateien werden über Corepack bereitgestellt:

PaketmanagerBinärnamen
Yarnyarn , yarnpkg
pnpmpnpm , pnpx

Häufige Fragen

Wie interagiert Corepack mit npm?

Obwohl Corepack npm wie jeden anderen Paketmanager unterstützen könnte, sind seine Shims standardmäßig nicht 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.
  • Während npm eine gültige Option in der "packageManager"-Eigenschaft ist, führt das Fehlen eines Shims dazu, dass das globale npm verwendet wird.

Das Ausführen von npm install -g yarn funktioniert nicht

npm verhindert versehentliches Überschreiben der Corepack-Binärdateien bei einer globalen Installation. Um dieses Problem zu vermeiden, sollten Sie eine der folgenden Optionen in Betracht ziehen:

  • 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, sodass die explizite Installation der Paketmanager nicht erforderlich ist.
  • Fügen Sie das --force-Flag zu npm install hinzu. Dies weist npm an, dass das Überschreiben von Binärdateien in Ordnung ist, aber Sie löschen dabei die Corepack-Binärdateien. (Führen Sie corepack enable aus, um sie wieder hinzuzufügen.)