Diese Aktion bietet GitHub Actions-Benutzern die folgende Funktionalität:
Optional Herunterladen und Zwischenspeichern der Verteilung der angeforderten Node.js-Version und Hinzufügen zum PATH
Optionales Zwischenspeichern von npm/yarn/pnpm-Abhängigkeiten
Registrieren von Problem-Matchern für die Fehlerausgabe
Konfigurieren der Authentifizierung für GPR oder npm
Siehe action.yml
- verwendet: actions/setup-node@v4 mit:# Versionsspezifikation der Version, die in der SemVer-Notation verwendet werden soll.# Es werden auch Aliase wie lts/*, Latest, Nightly und Canary Builds zugelassen# Beispiele: 12.x, 10.15.1, >=10.15.0, lts/ Wasserstoff, 16-nächtlich, aktuell, Nodenode-Version: ''# Datei mit der Versionsspezifikation der zu verwendenden Version. Beispiele: package.json, .nvmrc, .node-version, .tool-versions.# Wenn sowohl node-version als auch node-version-file angegeben sind, verwendet die Aktion die Version von node-version. node-version-file: ''# Legen Sie diese Option fest, wenn die Aktion nach der neuesten verfügbaren Version # suchen soll, die den Versionsspezifikationen entspricht.# Sie wirkt sich nur auf lts Nodejs-Versionen (12.x, >=10.15) aus. 0, Liter/Wasserstoff). # Standard: falsecheck-latest: false# Zielarchitektur für den zu verwendenden Knoten. Beispiele: x86, x64. Verwendet standardmäßig die Systemarchitektur.# Standard: ''. Die Aktion verwendet standardmäßig die Systemarchitektur: ''# Wird verwendet, um Knotenverteilungen von https://github.com/actions/node-versions abzurufen. # Da es eine Standardeinstellung gibt, wird diese normalerweise nicht vom Benutzer bereitgestellt. # Beim Ausführen dieser Aktion auf github.com ist der Standardwert ausreichend. # Bei der Ausführung auf GHES können Sie ein persönliches Zugriffstoken für github.com übergeben, wenn Sie eine Ratenbegrenzung feststellen.## Wir empfehlen die Verwendung eines Dienstkontos mit den geringsten erforderlichen Berechtigungen. Wählen Sie beim Generieren eines neuen PAT außerdem die geringsten erforderlichen Bereiche aus.## [Erfahren Sie mehr über das Erstellen und Verwenden verschlüsselter Geheimnisse](https://help.github.com/en/actions/automating-your-workflow-with-github -actions/creating-and-using-encrypted-secrets)## Standard: ${{ github.server_url == 'https://github.com' && github.token || '' }}token: ''# Wird verwendet, um einen Paketmanager für die Zwischenspeicherung im Standardverzeichnis anzugeben. Unterstützte Werte: npm, Yarn, Pnpm.# Paketmanager sollte vorinstalliert sein# Standard: ''cache: ''# Wird verwendet, um den Pfad zu einer Abhängigkeitsdatei anzugeben: package-lock.json, Yarn.lock usw. # Es generiert einen Hash aus der Zieldatei für den Primärschlüssel. Es funktioniert nur, wenn der Cache angegeben ist. # Unterstützt Platzhalter oder eine Liste von Dateinamen zum Zwischenspeichern mehrerer Abhängigkeiten.# Standard: ''cache-dependency-path: ''# Optionale Registrierung zum Einrichten für die Authentifizierung. Legt die Registrierung in einer .npmrc- und .yarnrc-Datei auf Projektebene fest und richtet die Authentifizierung zum Einlesen aus env.NODE_AUTH_TOKEN ein. # Wird auf den Repository-Eigentümer zurückgreifen, wenn die GitHub Packages-Registrierung (https://npm.pkg.github.com/) verwendet wird.# Standard: ''scope: ''# Always-auth-Option in der npmrc-Datei festlegen.# Standard : ''always-auth:''
Basic:
Schritte: - verwendet: actions/checkout@v4- verwendet: actions/setup-node@v4 with:node-version: 18- run: npm ci- run: npm test
Die Eingabe node-version
ist optional. Wenn nicht angegeben, wird die Knotenversion von PATH verwendet. Es wird jedoch empfohlen, immer die Node.js-Version anzugeben und sich nicht auf die Systemversion zu verlassen.
Die Aktion überprüft zunächst den lokalen Cache auf eine Semver-Übereinstimmung. Wenn eine bestimmte Version im Cache nicht gefunden werden kann, versucht die Aktion, eine Version von Node.js herunterzuladen. Es ruft LTS-Versionen von Node-Versions-Releases ab und greift bei Fehlschlägen oder Fehlern auf das vorherige Verhalten zurück, bei dem direkt vom Node-Verteiler heruntergeladen wurde.
Informationen zu lokal zwischengespeicherten Versionen von Node.js auf von GitHub gehosteten Runnern finden Sie unter GitHub Actions Runner Images.
Die node-version
Eingabe unterstützt die Semantic Versioning Specification. Ausführlichere Beispiele finden Sie in der Semver-Paketdokumentation.
Beispiele:
Hauptversionen: 18
, 20
Spezifischere Versionen: 10.15
, 16.15.1
, 18.4.0
NVM LTS-Syntax: lts/erbium
, lts/fermium
, lts/*
, lts/-n
Neueste Version: *
oder latest
/ current
/ node
Hinweis: Wie die anderen Werte erhält *
die neueste lokal zwischengespeicherte Node.js-Version oder die neueste Version von actions/node-versions, abhängig von der check-latest
Eingabe.
current
/ latest
/ node
wird immer in die neueste dist-Version aufgelöst. Diese Version wird dann, wenn möglich, von actions/node-versions heruntergeladen, oder direkt von Node.js, wenn nicht. Da es nicht immer zwischengespeichert wird, besteht die Möglichkeit, dass beim Herunterladen von dist die Geschwindigkeitsbegrenzung erreicht wird
Aus Sicherheits- und Leistungsgründen wird immer empfohlen, die Sperrdatei Ihres Paketmanagers festzuschreiben. Weitere Informationen finden Sie im Abschnitt „Arbeiten mit Sperrdateien“ im erweiterten Nutzungshandbuch.
Die Aktion verfügt über eine integrierte Funktionalität zum Zwischenspeichern und Wiederherstellen von Abhängigkeiten. Unter der Haube werden Aktionen/Cache zum Zwischenspeichern globaler Paketdaten verwendet, es sind jedoch weniger Konfigurationseinstellungen erforderlich. Unterstützte Paketmanager sind npm
, yarn
, pnpm
(v6.10+). Die cache
Eingabe ist optional und das Caching ist standardmäßig deaktiviert.
Die Aktion sucht standardmäßig nach der Abhängigkeitsdatei ( package-lock.json
, npm-shrinkwrap.json
oder yarn.lock
) im Repository-Stammverzeichnis und verwendet deren Hash als Teil des Cache-Schlüssels. Verwenden Sie cache-dependency-path
für Fälle, in denen mehrere Abhängigkeitsdateien verwendet werden oder sich diese in verschiedenen Unterverzeichnissen befinden.
Hinweis: Die Aktion speichert node_modules
nicht zwischen
Sehen Sie sich die Beispiele für die Verwendung von Cache für yarn
/ pnpm
und die Eingabe cache-dependency-path
im Leitfaden zur erweiterten Nutzung an.
NPM-Abhängigkeiten zwischenspeichern:
Schritte: - verwendet: actions/checkout@v4- verwendet: actions/setup-node@v4 with:node-version: 20cache: 'npm'- run: npm ci- run: npm test
NPM-Abhängigkeiten in Monorepos zwischenspeichern:
Schritte: - verwendet: actions/checkout@v4- verwendet: actions/setup-node@v4 with:node-version: 20cache: 'npm'cache-dependency-path: subdir/package-lock.json- run: npm ci- run: npm test
Jobs: build:runs-on: ubuntu-lateststrategy: Matrix:node: [ 14, 16, 18 ]Name: Node ${{ Matrix.node }} Beispielschritte: - verwendet: actions/checkout@v4 - Name: Setup-Knoten: actions/setup-node@v4mit: Knotenversion: ${{matrix.node }} - ausführen: npm ci - ausführen: npm test
setup-node
auf GHES setup-node
ist auf der Appliance mit GHES vorinstalliert, wenn Aktionen aktiviert sind. Beim dynamischen Herunterladen von Nodejs-Distributionen lädt setup-node
Distributionen von actions/node-versions
auf github.com (außerhalb der Appliance) herunter. Diese Aufrufe von actions/node-versions
erfolgen über nicht authentifizierte Anfragen, die auf 60 Anfragen pro Stunde und IP begrenzt sind. Wenn innerhalb des Zeitrahmens weitere Anfragen gestellt werden, werden Ihnen während des Downloads Ratenlimitfehler angezeigt, die wie folgt aussehen: ##[error]API rate limit exceeded for...
. Nach diesem Fehler versucht die Aktion, Versionen direkt von der offiziellen Website herunterzuladen, es kann jedoch auch eine Ratenbegrenzung geben, daher ist es besser, ein Token zu setzen.
Um ein höheres Ratenlimit zu erhalten, können Sie auf github.com ein persönliches Zugriffstoken generieren und es als token
Eingabe für die Aktion übergeben:
verwendet: actions/setup-node@v4with: token: ${{ Secrets.GH_DOTCOM_TOKEN }} Knotenversion: 20
Wenn der Läufer nicht auf github.com zugreifen kann, müssen alle während einer Workflow-Ausführung angeforderten Nodejs-Versionen aus dem Tool-Cache des Läufers stammen. Weitere Informationen finden Sie unter „Einrichten des Tool-Cache auf selbstgehosteten Läufern ohne Internetzugang“.
Überprüfen Sie die neueste Version
Verwenden einer Knotenversionsdatei
Verwendung unterschiedlicher Architekturen
Verwendung der Canary-Versionen der Version 8
Verwendung nächtlicher Versionen
Verwendung von RC-Versionen
Paketdaten zwischenspeichern
Verwendung mehrerer Betriebssysteme und Architekturen
Veröffentlichung auf npmjs und GPR mit npm
Veröffentlichung auf npmjs und GPR mit Garn
Verwendung privater Pakete
Die Skripte und Dokumentation in diesem Projekt werden unter der MIT-Lizenz veröffentlicht
Beiträge sind willkommen! Siehe Leitfaden für Mitwirkende
Sei nett. Sehen Sie sich unseren Verhaltenskodex an