Skip to main content
Wir veröffentlichen regelmäßig Aktualisierungen unserer Dokumentation, und die Übersetzung dieser Seite ist möglicherweise noch nicht abgeschlossen. Aktuelle Informationen findest du in der englischsprachigen Dokumentation.

Publishing Node.js packages

You can publish Node.js packages to a registry as part of your continuous integration (CI) workflow.

Node.js-Pakete veröffentlichen

Veröffentlichen von Node.js-Paketen

Du kannst Node.js-Pakete als Teil Deines Workflows zur kontinuierlichen Integrations (CI) in einer Registry veröffentlichen.

Einführung Dieser Leitfaden zeigt Dir, wie Du einen Workflow erstellen kannst, der Node.js Pakete nach den Tests der fortlaufenden Integration (CI) in die GitHub Packages und npm Registrierungen veröffentlicht.

Voraussetzungen

Wir empfehlen, dass Du ein grundlegendes Verständnis von Workflowkonfigurations-Optionen hast und darüber, wie Du eine Workflow-Datei erstellst.

Variablen

Verschlüsselte Geheimnisse Authentifizierung in einem Workflow Informationen zur Paketkonfiguration

Die Felder name und version in der Datei package.json erstellen einen eindeutigen Bezeichner, den Registrierungen zum Verknüpfen deines Pakets mit einer Registrierung verwenden. Du kannst eine Zusammenfassung für die Paketauflistungsseite hinzufügen, indem du das description-Feld in die Datei package.json einschließt.

Weitere Informationen findest du unter Erstellen einer package.json-Datei und Erstellen von Node.js-Modulen in der npm-Dokumentation.

Wenn eine lokale NPMRC-Datei vorhanden und der registry-Wert angegeben ist, verwendet der npm publish-Befehl die in der NPMRC-Datei konfigurierte Registrierung. Du kannst die setup-node-Aktion verwenden, um auf dem Runner eine lokale NPMRC-Datei zu erstellen, in der die Standardregistrierung und der Standardbereich konfiguriert werden. Die setup-node-Aktion akzeptiert als Eingabe auch ein Authentifizierungstoken, das für den Zugriff auf private Registrierungen oder die Veröffentlichung von Knotenpaketen verwendet wird. Weitere Informationen findest du unter setup-node.

Mithilfe der Aktion setup-node kannst du die im Runner installierte Node.js-Version angeben.

Wenn du in deinem Workflow Schritte zum Konfigurieren der publishConfig-Felder in der package.json-Datei hinzufügst, musst du die Registrierungs-URL (registry-url) nicht mit der setup-node-Aktion angeben, aber du kannst das Paket nur in einer einzigen Registrierung veröffentlichen. Weitere Informationen findest du unter publishConfig in der npm-Dokumentation. Pakete in der npm-Registry veröffentlichen Du kannst einen Workflow auslösen, um dein Paket jedes Mal zu veröffentlichen, wenn du ein neues Release veröffentlichst.

Der Prozess im folgenden Beispiel wird ausgeführt, wenn das Releaseereignis vom Typ published ausgelöst wird. Wenn die CI-Tests erfolgreich sind, lädt der Prozess das Paket in die npm-Registrierung hoch. Weitere Informationen findest du unter Verwalten von Releases in einem Repository.

Um in deinem Workflow authentifizierte Vorgänge für die npm-Registrierung auszuführen, musst du dein npm-Authentifizierungstoken als Geheimnis speichern. Erstelle beispielsweise ein Repositorygeheimnis namens NPM_TOKEN. Weitere Informationen findest du unter Erstellen und Verwenden verschlüsselter Geheimnisse.

Standardmäßig verwendet npm das name-Feld der package.json-Datei, um den Namen deines veröffentlichten Pakets zu bestimmen. Wenn Du in einem globalen Namespace veröffentlichst, brauchst Du nur den Paketnamen anzugeben. Du kannst beispielsweise ein Paket namens npm-hello-world-test unter https://www.npmjs.com/package/npm-hello-world-test veröffentlichen. Wenn du ein Paket veröffentlichst, das ein Präfix für den Bereich (scope) enthält, füge den Bereich in den Namen deiner package.json-Datei ein.

Wenn beispielsweise dein npm-Bereichspräfix „octocat“ ist und der Paketname „hello-world“ lautet, sollte der name in deiner package.json-Datei @octocat/hello-world lauten. Wenn dein npm-Paket ein Bereichspräfix verwendet und das Paket öffentlich ist, musst du die Option npm publish --access public verwenden.

YAML
name: Publish Package to npmjs
on:
  release:
    types: [published]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # Setup .npmrc file to publish to npm
      - uses: actions/setup-node@v3
        with:
          node-version: '16.x'
          registry-url: 'https://registry.npmjs.org'
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

Dies ist eine Option, die npm verlangt, um zu verhindern, dass jemand versehentlich ein privates Paket veröffentlicht.

//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
registry=https://registry.npmjs.org/
always-auth=true

In diesem Beispiel wird das NPM_TOKEN-Geheimnis in der Umgebungsvariablen NODE_AUTH_TOKEN gespeichert.

Wenn die setup-node-Aktion eine NPMRC-Datei erstellt, verweist sie auf das Token aus der Umgebungsvariablen NODE_AUTH_TOKEN.

Im vorherigen Beispiel erstellt die setup-node-Aktion im Runner eine NPMRC-Datei mit dem folgenden Inhalt: Beachte, dass du die registry-url in setup-node auf https://registry.npmjs.org/ festlegen musst, damit deine Anmeldeinformationen ordnungsgemäß konfiguriert werden. Pakete in der GitHub Packages veröffentlichen Du kannst einen Workflow auslösen, um dein Paket jedes Mal zu veröffentlichen, wenn du ein neues Release veröffentlichst.

Der Prozess im folgenden Beispiel wird ausgeführt, wenn das Releaseereignis vom Typ published ausgelöst wird.

Wenn die CI-Tests erfolgreich sind, lädt der Prozess das Paket in GitHub Packages hoch. Weitere Informationen findest du unter Verwalten von Releases in einem Repository. Konfigurieren des Zielrepositorys Die Verknüpfung des Pakets mit GitHub Packages mithilfe des repository-Schlüssels ist optional.

Wenn du den repository-Schlüssel in der Datei package.json nicht angibst, veröffentlicht GitHub Packages ein Paket in dem GitHub-Repository, das du im name-Feld der package.json-Datei angibst. Beispielsweise wird ein Paket namens @my-org/test wird im GitHub-Repository my-org/test veröffentlicht. Wenn die im repository-Schlüssel angegebene url ungültig ist, kann dein Paket zwar wahrscheinlich veröffentlicht werden, ist aber nicht wie gewünscht mit der Repositoryquelle verknüpft.

{
  "name": "@octocat/my-amazing-package",
  "repository": {
    "type": "git",
    "url": "https://github.com/octocat/my-other-repo.git"
  },

Wenn du den repository-Schlüssel in deiner package.json-Datei angibst, wird das Repository in diesem Schlüssel als npm-Zielregistrierung für GitHub Packages verwendet.

Das Veröffentlichen der folgenden package.json-Datei führt beispielsweise dazu, dass ein Paket namens my-amazing-package im GitHub-Repository octocat/my-other-repo veröffentlicht wird. Nach der Veröffentlichung wird nur die Repositoryquelle aktualisiert, und das Paket erbt keine Berechtigungen aus dem Zielrepository.

Authentifizieren beim Zielrepository Um authentifizierte Vorgänge für die GitHub Packages-Registrierung in deinem Workflow auszuführen, kannst du das GITHUB_TOKEN verwenden.

Das GITHUB_TOKEN-Geheimnis wird jedes Mal auf ein Zugriffstoken für das Repository festgelegt, wenn ein Auftrag in einem Workflow beginnt. Die Berechtigungen für dieses Zugriffstoken müssen in der Workflowdatei festgelegt werden, um Lesezugriff auf den contents-Bereich und Schreibzugriff auf den packages-Bereich zu gewähren. Weitere Informationen findest du unter Authenticating with the GITHUB_TOKEN („Authentifizieren mit dem GITHUB_TOKEN“).

Wenn du dein Paket in einem anderen Repository veröffentlichen möchtest, musst du ein personal access token (classic) verwenden, das über die Berechtigung zum Schreiben in Pakete im Zielrepository verfügt. Weitere Informationen findest du unter Erstellen eines personal access token und Verschlüsselte Geheimnisse.

YAML
name: Publish package to GitHub Packages
on:
  release:
    types: [published]
jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      # Setup .npmrc file to publish to GitHub Packages
      - uses: actions/setup-node@v3
        with:
          node-version: '16.x'
          registry-url: 'https://npm.pkg.github.com'
          # Defaults to the user or organization that owns the workflow file
          scope: '@octocat'
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Beispielworkflow In diesem Beispiel wird das GITHUB_TOKEN-Geheimnis in der Umgebungsvariablen NODE_AUTH_TOKEN gespeichert. Wenn die setup-node-Aktion eine NPMRC-Datei erstellt, verweist sie auf das Token aus der Umgebungsvariablen NODE_AUTH_TOKEN.

//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
@octocat:registry=https://npm.pkg.github.com
always-auth=true

Die setup-node-Aktion erstellt eine NPMRC-Datei im Runner.

Wenn du die scope-Eingabe für die setup-node-Aktion verwendest, enthält die NPMRC-Datei das Bereichspräfix.

YAML
name: Publish Package to npmjs
on:
  release:
    types: [published]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # Setup .npmrc file to publish to npm
      - uses: actions/setup-node@v3
        with:
          node-version: '16.x'
          registry-url: 'https://registry.npmjs.org'
          # Defaults to the user or organization that owns the workflow file
          scope: '@octocat'
      - run: yarn
      - run: yarn publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}