{"meta":{"title":"Erstellen und Testen von Node.js-Code","intro":"Hier erfährst, du, wie du einen CI-Workflow (Continuous Integration) erstellst, um dein Node.js-Projekt zu erstellen und zu testen.","product":"GitHub Actions","breadcrumbs":[{"href":"/de/actions","title":"GitHub Actions"},{"href":"/de/actions/tutorials","title":"Anleitungen"},{"href":"/de/actions/tutorials/build-and-test-code","title":"Erstellen und Testen von Code"},{"href":"/de/actions/tutorials/build-and-test-code/nodejs","title":"Node.js"}],"documentType":"article"},"body":"# Erstellen und Testen von Node.js-Code\n\nHier erfährst, du, wie du einen CI-Workflow (Continuous Integration) erstellst, um dein Node.js-Projekt zu erstellen und zu testen.\n\n## Einführung\n\nDiese Anleitung zeigt Dir, wie du einen Workflow für fortlaufende Integration (CI) erstellen kannst, der Node.js-Code baut und testet. Wenn deine CI-Tests erfolgreich durchlaufen, kannst du deinen Code deployen (bereitstellen) oder ein Paket veröffentlichen.\n\n## Voraussetzungen\n\nWir empfehlen, dass du ein grundlegendes Verständnis von Node.js, YAML, Workflowkonfigurations-Optionen und die Erstellung einer Workflow-Datei hast. Weitere Informationen finden Sie unter:\n\n* [Schreiben von Workflows](/de/actions/how-tos/write-workflows)\n* [Erste Schritte mit Node.js](https://nodejs.org/learn/getting-started/introduction-to-nodejs)\n\n## Verwenden einer Node.js-Workflowvorlage\n\nFügen Sie für einen schnellen Einstieg dem Verzeichnis `.github/workflows` Ihres Repositorys eine Workflowvorlage hinzu.\n\nGitHub stellt eine Workflowvorlage für Node.js bereit, die für die meisten Node.js Projekte funktionieren sollte. In den nachfolgenden Abschnitten dieser Anleitung finden Sie Beispiele dafür, wie diese Workflowvorlage angepasst werden kann.\n\n1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.\n\n2. Klicke unter dem Repositorynamen auf **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Wenn du bereits über einen Workflow im Repository verfügst, klicke auf **Neuer Workflow**.\n\n4. Auf der Seite „Workflow auswählen“ wird eine Auswahl empfohlener Workflowvorlagen angezeigt. Suchen Sie nach „Node.js“.\n\n5. Filtern Sie die Auswahl von Workflows, indem Sie auf **Continuous Integration** klicken.\n\n6. Klicken Sie im Workflow „Node.js“ auf **Konfigurieren**.\n\n7. Bearbeiten Sie den Workflow nach Bedarf. Ändern Sie beispielsweise die Node-Versionen, die Sie verwenden möchten.\n\n8. Klicke auf **Änderungen übernehmen**.\n\n   Die `node.js.yml` Workflowdatei wird dem `.github/workflows` Verzeichnis Ihres Repositorys hinzugefügt.\n\n## Die Node.js-Version angeben\n\nAm einfachsten können Sie eine Node.js Version angeben, indem Sie die `setup-node` von GitHubihnen bereitgestellte Aktion verwenden. Weitere Informationen findest du unter [`setup-node`](https://github.com/actions/setup-node/).\n\nDie Aktion `setup-node` nimmt eine Node.js-Version als Eingabe und konfiguriert diese auf dem Runner. Mit dieser Aktion `setup-node` wird im Toolcache der jeweiligen Runner nach einer bestimmten Version von Node.js gesucht, und die erforderlichen Binärdateien werden in `PATH` hinzugefügt, der für den Rest des Auftrags bestehen bleibt. Die Verwendung der Aktion `setup-node` ist die empfohlene Methode, Node.js mit GitHub Actions zu verwenden, da dadurch ein konsistentes Verhalten über verschiedene Runner und verschiedene Versionen von Node.js hinweg gewährleistet wird. Wenn du einen selbst gehosteten Runner verwendest, musst du Node.js installieren und in `PATH` hinzufügen.\n\nDie Workflowvorlage umfasst eine Matrixstrategie, die den Code mit den in `node-version` aufgeführten Node.js-Versionen erstellt und testet. Das „x“ in der Versionsnummer ist ein Platzhalterzeichen für das neueste Neben- und Patchrelease einer Version. Von jeder im `node-version`-Array angegebenen Version von Node.js wird ein Auftrag erstellt, bei dem dieselben Schritte ausgeführt werden.\n\nJeder Job kann mithilfe des `node-version`-Kontexts auf den im Array der Matrix `matrix` definierten Wert zugreifen. Die Aktion `setup-node` verwendet den Kontext als `node-version`-Eingabe. Die Aktion `setup-node` konfiguriert jeden Auftrag mit einer anderen Node.js-Version, bevor sie den Code erstellt und testet. Weitere Informationen zu Matrixstrategien und -kontexten findest du unter [Workflowsyntax für GitHub Actions](/de/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstrategymatrix) und [Kontextreferenz](/de/actions/reference/workflows-and-actions/contexts).\n\n```yaml copy\nstrategy:\n  matrix:\n    node-version: ['18.x', '20.x']\n\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js ${{ matrix.node-version }}\n  uses: actions/setup-node@v7\n  with:\n    node-version: ${{ matrix.node-version }}\n```\n\nAlternativ kannnst du auch mit genauen Node.js-Versionen bauen und testen.\n\n```yaml copy\nstrategy:\n  matrix:\n    node-version: ['10.17.0', '17.9.0']\n```\n\nOder du kannst auch mithilfe einer einzelnen Version von Node.js bauen und testen.\n\n```yaml copy\nname: Node.js CI\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n      - name: Use Node.js\n        uses: actions/setup-node@v7\n        with:\n          node-version: '20.x'\n      - run: npm ci\n      - run: npm run build --if-present\n      - run: npm test\n```\n\nWenn Sie keine Node.js-Version angeben, verwendet GitHub die standardmäßige Node.js-Version der Umgebung.\nWeitere Informationen finden Sie unter [Von GitHub gehostete Runner](/de/actions/concepts/runners/github-hosted-runners#preinstalled-software-for-github-owned-images).\n\n## Installieren von Abhängigkeiten\n\nVon GitHub gehostete Runner haben die Paketmanager npm und Yarn installiert. Du kannst npm und Yarn verwenden, um in deinem Workflow Abhängigkeiten zu installieren, bevor du deinen Code kompilierst und testest. Die Windows- und Linux-GitHub-gehosteten Runner haben auch Grunt, Gulp und Bower installiert.\n\nSie können auch Abhängigkeiten zwischenspeichern, um Ihren Workflow zu beschleunigen. Weitere Informationen finden Sie unter [Referenz zum Zwischenspeichern von Abhängigkeiten](/de/actions/reference/workflows-and-actions/dependency-caching).\n\n### Beispiel mit npm\n\nIn diesem Beispiel werden die Versionen aus der Datei `package-lock.json` oder `npm-shrinkwrap.json` installiert und verhindert, dass Updates an der Sperrdatei vorgenommen werden. Die Verwendung von `npm ci` ist im Allgemeinen schneller als die Ausführung von `npm install`. Weitere Informationen finden Sie unter [`npm ci`](https://docs.npmjs.com/cli/ci.html) und [Einführung von `npm ci` für schnellere, zuverlässigere Builds](https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v7\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: npm ci\n```\n\nMit `npm install` werden die in der Datei `package.json` definierten Abhängigkeiten installiert. Weitere Informationen finden Sie unter [`npm install`](https://docs.npmjs.com/cli/install).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v7\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: npm install\n```\n\n### Beispiel mit Yarn\n\nIn diesem Beispiel werden die in der Datei `yarn.lock` definierten Abhängigkeiten installiert, und Updates der Datei `yarn.lock` werden verhindert. Weitere Informationen finden Sie unter [`yarn install`](https://yarnpkg.com/en/docs/cli/install).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v7\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: yarn --frozen-lockfile\n```\n\nAlternativ kannst du die in der Datei `package.json` definierten Abhängigkeiten installieren.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v7\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: yarn\n```\n\n### Beispiel mit einer privaten Registry und Erstellung der Datei .npmrc\n\nDu 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`](https://github.com/actions/setup-node/).\n\nUm dich bei deiner privaten Registry zu authentifizieren, musst du dein npm-Authentifizierungstoken als Geheimnis speichern. Erstelle beispielsweise ein Repositorygeheimnis namens `NPM_TOKEN`. Weitere Informationen finden Sie unter [Verwenden von Geheimnissen in GitHub-Aktionen](/de/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n\nIm folgenden Beispiel enthält das Geheimnis `NPM_TOKEN` das npm-Authentifizierungstoken. Die Aktion `setup-node` konfiguriert die `.npmrc`-Datei, um das npm-Authentifizierungstoken aus der Umgebungsvariable `NODE_AUTH_TOKEN` zu lesen. Wenn du die Aktion `setup-node` zum Erstellen einer `.npmrc`-Datei verwendest, musst du die Umgebungsvariable `NODE_AUTH_TOKEN` mit dem Geheimnis festlegen, das dein npm-Authentifizierungstoken enthält.\n\nVerwende vor der Installation von Abhängigkeiten die Aktion `setup-node`, um die `.npmrc`-Datei zu erstellen. Die Aktion hat zwei Eingabeparameter. Der Parameter `node-version` legt die Node.js-Version fest, und der Parameter `registry-url` legt die Standardregistrierung fest. Wenn deine Paketregistrierung Geltungsbereiche verwendet, musst du den Parameter `scope` verwenden. Weitere Informationen finden Sie unter [`npm-scope`](https://docs.npmjs.com/misc/scope).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v7\n  with:\n    always-auth: true\n    node-version: '20.x'\n    registry-url: https://registry.npmjs.org\n    scope: '@octocat'\n- name: Install dependencies\n  run: npm ci\n  env:\n    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n```\n\nDas obige Beispiel erstellt eine `.npmrc`-Datei mit folgendem Inhalt:\n\n```shell\n//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}\n@octocat:registry=https://registry.npmjs.org/\nalways-auth=true\n```\n\n### Beispiel zum Zwischenspeichern von Abhängigkeiten im Cache\n\nDu kannst die Abhängigkeiten mithilfe der [Aktion `setup-node`](https://github.com/actions/setup-node) zwischenspeichern und wiederherstellen.\n\nIm folgenden Beispiel werden Abhängigkeiten für npm zwischengespeichert.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- uses: actions/setup-node@v7\n  with:\n    node-version: '20'\n    cache: 'npm'\n- run: npm install\n- run: npm test\n```\n\nIm folgenden Beispiel werden Abhängigkeiten für Yarn zwischengespeichert.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- uses: actions/setup-node@v7\n  with:\n    node-version: '20'\n    cache: 'yarn'\n- run: yarn\n- run: yarn test\n```\n\nIm folgenden Beispiel werden Abhängigkeiten für pnpm (ab Version 6.10) zwischengespeichert.\n\n```yaml copy\n# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.\n# Sie werden von einem Drittanbieter bereitgestellt und unterliegen\n# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support\n# Onlinedokumentation.\n\n# NOTE: pnpm caching support requires pnpm version >= 6.10.0\n\nsteps:\n- uses: actions/checkout@v6\n- uses: pnpm/action-setup@0609f0983b7a228f052f81ef4c3d6510cae254ad\n  with:\n    version: 6.10.0\n- uses: actions/setup-node@v7\n  with:\n    node-version: '20'\n    cache: 'pnpm'\n- run: pnpm install\n- run: pnpm test\n```\n\nWenn du eine benutzerdefinierte Einstellung hast oder genauere Kontrollen für das Zwischenspeichern benötigst, kannst du die [Aktion `cache`](https://github.com/marketplace/actions/cache) verwenden. Weitere Informationen finden Sie unter [Referenz zum Zwischenspeichern von Abhängigkeiten](/de/actions/reference/workflows-and-actions/dependency-caching).\n\n## Deinen Code bauen und testen\n\nDu kannst die gleichen Befehle verwenden, die Du auch lokal verwendest, um Deinen Code zu bauen und zu testen. Wenn du beispielsweise `npm run build` ausführst, um die in der Datei `package.json` definierten Buildschritte auszuführen, und `npm test`, um deine Testsuite auszuführen, fügst du diese Befehle in der Workflowdatei hinzu.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v7\n  with:\n    node-version: '20.x'\n- run: npm install\n- run: npm run build --if-present\n- run: npm test\n```\n\n## Workflow-Daten als Artefakte paketieren\n\nDu kannst Artefakte aus deinen Build- und Testschritten speichern, um sie nach dem Abschluss eines Jobs anzuzeigen. Zum Beispiel kann es notwendig sein, Logdateien, Core Dumps, Testergebnisse oder Screenshots zu speichern. Weitere Informationen finden Sie unter [Speichern und Freigeben von Daten mit Workflowartefakten](/de/actions/tutorials/store-and-share-data).\n\n## In Paket-Registries veröffentlichen\n\nDu kannst deinen Workflow so konfigurieren, dass dein Node.js-Paket nach Bestehen deiner CI-Tests in einer Paket-Registry veröffentlicht wird. Weitere Informationen zum Veröffentlichen in npm und GitHub Packagesfinden Sie unter [Node.js-Pakete veröffentlichen](/de/actions/tutorials/publish-packages/publish-nodejs-packages)."}