Corepack ist ein Node.js-Skript ohne Laufzeitabhängigkeit, das als Brücke zwischen Node.js-Projekten und den Paketmanagern fungiert, mit denen sie während der Entwicklung verwendet werden sollen. In der Praxis können Sie mit Corepack Yarn, npm und pnpm verwenden, ohne diese installieren zu müssen .
Corepack wird standardmäßig mit allen aktuellen Node.js-Versionen verteilt. Führen Sie corepack enable
aus, um die erforderlichen Yarn- und pnpm-Binärdateien in Ihrem Pfad zu installieren.
Deinstallieren Sie zunächst Ihre globalen Yarn- und pnpm-Binärdateien (belassen Sie einfach npm). Im Allgemeinen würden Sie dies tun, indem Sie den folgenden Befehl ausführen:
npm uninstall -g Yarn pnpm# Das sollte ausreichen, aber wenn Sie Yarn installiert haben, ohne über npm zu gehen, könnte es # mühsamer sein – zum Beispiel müssen Sie möglicherweise auch „brew uninstall Yarn“ ausführen.
Dann installieren Sie Corepack:
npm install -g corepack
Wir sind uns der Ironie und des Mehraufwands bewusst, die mit der Verwendung von npm zur Installation von Corepack verbunden sind. Dies ist zumindest ein Grund dafür, dass die bevorzugte Option darin besteht, die Corepack-Version zu verwenden, die zusammen mit Node.js selbst verteilt wird.
Siehe CONTRIBUTING.md
.
Verwenden Sie einfach Ihre Paketmanager wie gewohnt. Führen Sie yarn install
in Yarn-Projekten, pnpm install
in pnpm-Projekten und npm
in npm-Projekten aus. Corepack wird diese Anrufe entgegennehmen und je nach Situation Folgendes tun:
Wenn das lokale Projekt für den von Ihnen verwendeten Paketmanager konfiguriert ist , lädt Corepack die neueste kompatible Version herunter und speichert sie im Cache.
Wenn das lokale Projekt für einen anderen Paketmanager konfiguriert ist , fordert Corepack Sie auf, den Befehl erneut mit dem richtigen Paketmanager auszuführen – und vermeidet so Beschädigungen Ihrer Installationsartefakte.
Wenn das lokale Projekt für keinen Paketmanager konfiguriert ist , geht Corepack davon aus, dass Sie wissen, was Sie tun, und verwendet die Version des Paketmanagers, die als „bekanntermaßen funktionierende Version“ angeheftet ist. Weitere Einzelheiten finden Sie im entsprechenden Abschnitt.
Legen Sie den Manager Ihres Pakets mit dem Feld packageManager
in package.json
fest:
{ „packageManager“: „[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa“}
Hier ist yarn
der Name des Paketmanagers, der in Version 3.2.3
angegeben ist, zusammen mit dem SHA-224-Hash dieser Version zur Validierung. packageManager@xyz
ist erforderlich. Der Hash ist optional, wird aber aus Sicherheitsgründen dringend empfohlen. Zulässige Werte für den Paketmanager sind yarn
, npm
und pnpm
.
Sie können auch eine URL zu einer .js
Datei (die als CommonJS-Modul interpretiert wird) oder einer .tgz
Datei (die als Paket interpretiert wird) angeben, und das "bin"
-Feld der package.json
wird dafür verwendet bestimmen Sie, welche Datei im Archiv verwendet werden soll).
{ „packageManager“: „yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b“}
Wenn Corepack in Projekten ausgeführt wird, in denen kein unterstützter Paketmanager aufgeführt ist, wird standardmäßig eine Reihe bekanntermaßen guter Versionen verwendet.
Wenn es für den angeforderten Paketmanager keine als funktionierend bekannte Version gibt, sucht Corepack in der npm-Registrierung nach der neuesten verfügbaren Version und speichert sie für die zukünftige Verwendung zwischen.
Die als funktionierend bekannten Versionen können systemweit mit corepack install -g
aktualisiert werden. Wenn Corepack eine neue Version eines bestimmten Paketmanagers auf derselben Hauptlinie wie die als funktionierend bekannte Version herunterlädt, aktualisiert es diese standardmäßig automatisch.
Die Dienstprogrammbefehle werden im nächsten Abschnitt detailliert beschrieben.
Entweder können Sie das Netzwerk verwenden, während Sie Ihr Container-Image erstellen. In diesem Fall führen Sie einfach corepack pack
aus, um sicherzustellen, dass Ihr Image die letzte als funktionierend bekannte Version für den angegebenen Paketmanager enthält.
Oder Sie veröffentlichen Ihr Projekt auf einem System, auf dem das Netzwerk nicht verfügbar ist. In diesem Fall erstellen Sie präventiv ein Paketmanager-Archiv von Ihrem lokalen Computer (mithilfe von corepack pack -o
), bevor Sie es an einem Ort speichern, auf den Ihr Container zugreifen kann (zum Beispiel in Ihrem Repository). Danach müssen Sie nur noch corepack install -g --cache-only
ausführen, um den Cache einzurichten.
corepack [@] [... args]
Dieser Metabefehl führt den angegebenen Paketmanager im lokalen Ordner aus. Sie können damit die Ausführung einer Installation mit einer bestimmten Version erzwingen, was bei der Suche nach Regressionen hilfreich sein kann.
Beachten Sie, dass diese Befehle weiterhin prüfen, ob das lokale Projekt für den angegebenen Paketmanager konfiguriert ist (dh Sie können corepack yarn install
nicht für ein Projekt ausführen, bei dem das Feld packageManager
auf pnpm
verweist).
corepack cache clean
Löscht das lokale COREPACK_HOME
Cache-Verzeichnis.
corepack cache clear
Löscht das lokale COREPACK_HOME
Cache-Verzeichnis.
corepack enable [... name]
Option | Beschreibung |
---|---|
--install-directory | Fügen Sie die Unterlegscheiben an der angegebenen Stelle hinzu |
Dieser Befehl erkennt, wo Corepack installiert ist, und erstellt daneben Shims für jeden der angegebenen Paketmanager (oder alle, wenn der Befehl ohne Parameter aufgerufen wird). Beachten Sie, dass die NPM-Shims nicht installiert werden, es sei denn, dies wird ausdrücklich angefordert, da NPM derzeit auf andere Weise mit Node.js verteilt wird.
Wenn das Dateisystem, in dem sich die corepack
Binärdatei befindet, schreibgeschützt ist, schlägt dieser Befehl fehl. Eine Problemumgehung besteht darin, die Binärdateien als Alias in Ihre Shell-Konfigurationsdatei einzufügen (z. B. in ~/.bash_aliases
):
alias Yarn="corepack Yarn"alias Yarnpkg="corepack Yarnpkg"alias pnpm="corepack pnpm"alias pnpx="corepack pnpx"alias npm="corepack npm"alias npx="corepack npx"
Unter Windows PowerShell können Sie Funktionen mithilfe der automatischen Variablen $PROFILE
hinzufügen:
echo "Funktion Garn { Corepack Garn `$args }" >> $PROFILEecho "Funktion Garnpkg { Corepack Garnpkg `$args }" >> $PROFILEecho "Funktion pnpm { Corepack pnpm `$args }" >> $PROFILEecho "Funktion pnpx { corepack pnpx `$args }" >> $PROFILEecho "function npm { corepack npm `$args }" >> $PROFILEecho "function npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
Option | Beschreibung |
---|---|
--install-directory | Entfernen Sie die Unterlegscheiben an der angegebenen Stelle |
Dieser Befehl erkennt, wo Node.js installiert ist, und entfernt die Shims von dort.
corepack install
Laden Sie den im lokalen Projekt konfigurierten Paketmanager herunter und installieren Sie ihn. Dieser Befehl ändert nicht die globale Version, die verwendet wird, wenn der Paketmanager von außerhalb des Projekts ausgeführt wird (verwenden Sie das Flag „-g,--global“, wenn Sie dies wünschen).
corepack install <-g,--global> [... name[@]]
Installieren Sie die ausgewählten Paketmanager und installieren Sie sie auf dem System.
Auf diese Weise installierte Paketmanager werden als neue Standardkonfiguration konfiguriert, wenn ihre jeweiligen Binärdateien außerhalb von Projekten aufgerufen werden, die das Feld packageManager
definieren.
corepack pack [... name[@]]
Option | Beschreibung |
---|---|
--json | Drucken Sie den Ausgabeordner und nicht die Protokolle |
-o,--output | Pfad, in dem das Archiv generiert werden soll |
Laden Sie die ausgewählten Paketmanager herunter und speichern Sie sie in einem Tarball, der für die Verwendung mit corepack install -g
geeignet ist.
corepack use ]>
Bei der Ausführung ruft dieser Befehl die neueste Version ab, die dem bereitgestellten Deskriptor entspricht, weist sie der package.json-Datei des Projekts zu und führt automatisch eine Installation durch.
corepack up
Rufen Sie die neueste verfügbare Version für die aktuelle Hauptversionslinie des im lokalen Projekt verwendeten Paketmanagers ab und aktualisieren Sie das Projekt, um sie zu verwenden.
Im Gegensatz zu corepack use
benötigt dieser Befehl weder einen Paketmanagernamen noch einen Versionsbereich, da er immer die neueste verfügbare Version aus derselben Hauptzeile auswählt. Sollten Sie ein Upgrade auf eine neue Hauptversion durchführen müssen, verwenden Sie einen expliziten Aufruf corepack use {name}@latest
(oder einfach corepack use {name}
).
COREPACK_DEFAULT_TO_LATEST
kann auf 0
gesetzt werden, um Corepack anzuweisen, nicht in der Remote-Registrierung nach der neuesten Version des ausgewählten Paketmanagers zu suchen und die letzte als funktionierend bekannte Version nicht zu aktualisieren, wenn eine neue Version derselben Hauptlinie heruntergeladen wird.
COREPACK_ENABLE_AUTO_PIN
kann auf 0
gesetzt werden, um zu verhindern, dass Corepack das packageManager
-Feld aktualisiert, wenn es erkennt, dass das lokale Paket es nicht auflistet. Im Allgemeinen empfehlen wir, immer ein packageManager
Feld aufzulisten (das Sie einfach über corepack use [name]@[version]
festlegen können), da dadurch sichergestellt wird, dass Ihre Projektinstallationen immer deterministisch sind.
COREPACK_ENABLE_DOWNLOAD_PROMPT
kann auf 0
gesetzt werden, um zu verhindern, dass Corepack die URL anzeigt, wenn Software heruntergeladen werden muss, oder auf 1
gesetzt werden, damit die URL angezeigt wird. Wenn Corepack explizit aufgerufen wird (z. B. corepack pnpm …
), ist es standardmäßig auf 0
gesetzt; Wenn Corepack implizit aufgerufen wird (z. B. pnpm …
), wird es auf 1
gesetzt. Wenn die Standardeingabe ein TTY ist und keine CI-Umgebung erkannt wird, fordert Corepack vor dem Start des Downloads eine Benutzereingabe an.
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
kann auf 1
gesetzt werden, um die Verwendung benutzerdefinierter URLs zum Laden eines von Corepack bekannten Paketmanagers ( yarn
, npm
und pnpm
) zu ermöglichen.
COREPACK_ENABLE_NETWORK
kann auf 0
gesetzt werden, um zu verhindern, dass Corepack auf das Netzwerk zugreift (in diesem Fall sind Sie dafür verantwortlich, die Paketmanagerversionen zu aktualisieren, die für die von Ihnen ausgeführten Projekte erforderlich sind, indem Sie corepack install -g --cache-only
verwenden). ).
COREPACK_ENABLE_STRICT
kann auf 0
gesetzt werden, um zu verhindern, dass Corepack einen Fehler auslöst, wenn der Paketmanager nicht dem für das aktuelle Projekt definierten entspricht. Das heißt, wenn ein Benutzer den im aktuellen Projekt angegebenen Paketmanager verwendet, verwendet er die im Feld packageManager
des Projekts angegebene Version. Wenn der Benutzer jedoch einen anderen Paketmanager als den für das aktuelle Projekt angegebenen verwendet, wird die systemweite Paketmanagerversion verwendet.
COREPACK_ENABLE_PROJECT_SPEC
kann auf 0
gesetzt werden, um zu verhindern, dass Corepack überprüft, ob der Paketmanager dem für das aktuelle Projekt definierten entspricht. Dies bedeutet, dass immer der systemweite Paketmanager verwendet wird, unabhängig davon, was im packageManager
Feld des Projekts angegeben ist.
COREPACK_HOME
kann festgelegt werden, um zu definieren, wo Corepack die Paketmanager installieren soll. Standardmäßig ist es unter Windows auf %LOCALAPPDATA%nodecorepack
und überall sonst auf $HOME/.cache/node/corepack
eingestellt.
COREPACK_ROOT
hat keine funktionalen Auswirkungen auf Corepack selbst; Es wird von Corepack automatisch in Ihrer Umgebung festgelegt, wenn es an die zugrunde liegenden Paketmanager gesendet wird, damit diese sein Vorhandensein anhand von Funktionen erkennen können (nützlich für Befehle wie yarn init
“).
COREPACK_NPM_REGISTRY
legt die Registrierungs-Basis-URL fest, die beim Abrufen von Paketmanagern von npm verwendet wird. Der Standardwert ist https://registry.npmjs.org
COREPACK_NPM_TOKEN
legt einen Bearer-Token-Autorisierungsheader fest, wenn eine Verbindung zu einer NPM-Typ-Registrierung hergestellt wird.
COREPACK_NPM_USERNAME
und COREPACK_NPM_PASSWORD
zum Festlegen eines Basic-Autorisierungsheaders beim Herstellen einer Verbindung mit einer NPM-Typ-Registrierung. Beachten Sie, dass beide Umgebungsvariablen erforderlich sind und als Klartext vorliegen. Wenn Sie ein leeres Passwort senden möchten, legen Sie COREPACK_NPM_PASSWORD
explizit auf eine leere Zeichenfolge fest.
HTTP_PROXY
, HTTPS_PROXY
und NO_PROXY
werden durch node-proxy-agent
unterstützt.
COREPACK_INTEGRITY_KEYS
kann auf eine leere Zeichenfolge oder 0
gesetzt werden, um Corepack anzuweisen, Integritätsprüfungen zu überspringen, oder auf eine JSON-Zeichenfolge mit benutzerdefinierten Schlüsseln.
Es gibt eine Vielzahl von Netzwerkproblemen, die beim Ausführen corepack
-Befehlen auftreten können. Zu überprüfende Dinge:
Stellen Sie sicher, dass Ihre Netzwerkverbindung aktiv ist.
Stellen Sie sicher, dass der Host für Ihre Anfrage von Ihrem DNS aufgelöst werden kann. Versuchen Sie es mit curl [URL]
(IPv4) und curl -6 [URL]
(IPv6) aus Ihrer Shell.
Überprüfen Sie Ihre Proxy-Einstellungen (siehe Umgebungsvariablen).
Siehe CONTRIBUTING.md
.
Siehe LICENSE.md
.