Node.js-.gitignore-Vorlage erklärt
Erklärt Regel für Regel, warum Node.gitignore node_modules, Logs, Build-Artefakte, .env und Tool-Caches ignoriert, und fasst Hinweise zu Lockfiles und Yarn Berry zusammen.
Node.gitignore ist die Vorlage für JavaScript/TypeScript-Projekte, die Abhängigkeiten mit npm, Yarn oder pnpm installieren. Sie zielt nicht auf ein einzelnes Framework, sondern sammelt breit die Cache- und Build-Ordner, die Werkzeuge des Ökosystems wie Next.js, Nuxt, Gatsby, SvelteKit, VitePress, Docusaurus oder Serverless erzeugen.
Im Kern geht es um drei Dinge: Abhängigkeiten, die bei jeder Installation neu entstehen (node_modules/), Logs und Laufzeitdateien, die während der Ausführung entstehen, und Umgebungsvariablendateien, deren Commit problematisch wäre (.env). package.json und das Lockfile ignoriert diese Vorlage dagegen nicht – sie müssen committet werden.
Regeln im Einzelnen
| Muster | Was ignoriert wird und warum |
|---|---|
node_modules/jspm_packages/web_modules/bower_components | AbhängigkeitsverzeichnisseSie lassen sich jederzeit mit npm install neu erzeugen, umfassen Zehntausende Dateien und enthalten betriebssystemspezifische native Binärdateien, die in einer anderen Umgebung eher Fehler verursachen. Da das Muster keinen Schrägstrich enthält, werden auch node_modules in Unterpaketen eines Monorepos erfasst. |
logs*.lognpm-debug.log*yarn-debug.log*yarn-error.log*report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | Logs und DiagnoseberichteDebug-Logs, die der Paketmanager bei Fehlern hinterlässt, und Diagnoseberichte von Node.js (process.report). Sie enthalten Umgebung und Pfade der ausführenden Person und entstehen jedes Mal neu – es gibt keinen Grund, sie in der Historie zu behalten. |
pids*.pid*.pid.lockcoverage*.lcov.nyc_outputlib-cov | Laufzeit- und Coverage-ArtefakteProzess-ID-Dateien und Ergebnisse der Testabdeckung. Die Abdeckung wird in der CI jedes Mal neu berechnet; im Repository erzeugt sie nur zusätzliche Konflikte. |
distout.next.nuxt.output.svelte-kit/build/Release*.tsbuildinfo | Build-ErgebnisseAusgaben von Bundlern und Frameworks. *.tsbuildinfo enthält die Informationen für inkrementelle TypeScript-Builds. Muster ohne abschließendes / wie dist oder out ignorieren auch gleichnamige Dateien; gibt es in den Quellen eine solche Datei, schränken Sie die Regel etwa auf /dist/ ein. |
.env.env.*!.env.example | UmgebungsvariablendateienDiese Dateien enthalten API-Schlüssel und Datenbankpasswörter. Varianten wie .env.local oder .env.production werden mit .env.* blockiert, während .env.example, das nur die Schlüssel ohne Werte auflistet, mit ! wieder aufgenommen wird, damit das Team weiß, welche Variablen nötig sind. |
.npm.eslintcache.stylelintcache.cache.parcel-cache.vite/.pnpm-store | Tool-CachesCaches, die Linter, Bundler und Paketmanager zur Beschleunigung nutzen. Gelöscht werden sie automatisch neu erzeugt; ihr Inhalt unterscheidet sich von Person zu Person, sodass ein Commit ständig unnötige Änderungen erzeugt. |
.pnp.*.yarn/*!.yarn/patches!.yarn/plugins!.yarn/releases!.yarn/sdks!.yarn/versions | Yarn Berry (2+)Die Struktur schließt nur den Inhalt von .yarn/ aus (.yarn/*) und nimmt die zu teilenden Unterordner mit ! wieder auf. Hätte man das Verzeichnis selbst mit .yarn/ ausgeschlossen, würde git nicht hineinschauen und die !-Regeln wären wirkungslos. |
Hinweise für die Praxis
package-lock.json,yarn.lockundpnpm-lock.yamlnicht ignorieren, sondern committen. Auch die npm-Dokumentation empfiehlt nachdrücklich, das Lockfile unter Versionskontrolle zu stellen.- Wenn Sie Yarns Zero-Installs nutzen (Commit von
.yarn/cache), entfernen Sie die Regel.pnp.*und ergänzen Sie!.yarn/cache. - Wurde
.envbereits committet, verschwindet die Datei durch eine Ignorierregel allein nicht. Beenden Sie das Tracking mitgit rm --cached .envund widerrufen und erneuern Sie offengelegte Schlüssel. .DS_Storevon macOS und Editoreinstellungen sind in dieser Vorlage nicht enthalten. Wählen Sie zusätzlich die Vorlagen macOS und VisualStudioCode oder legen Sie sie in eine globale gitignore.
Originalvorlage
# Logslogs*.lognpm-debug.log*yarn-debug.log*yarn-error.log*lerna-debug.log*# Diagnostic reports (https://nodejs.org/api/report.html)report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json# Runtime datapids*.pid*.seed*.pid.lock# Directory for instrumented libs generated by jscoverage/JSCoverlib-cov# Coverage directory used by tools like istanbulcoverage*.lcov# nyc test coverage.nyc_output# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files).grunt# Bower dependency directory (https://bower.io/)bower_components# node-waf configuration.lock-wscript# Compiled binary addons (https://nodejs.org/api/addons.html)build/Release# Dependency directoriesnode_modules/jspm_packages/# Snowpack dependency directory (https://snowpack.dev/)web_modules/# TypeScript cache*.tsbuildinfo# Optional npm cache directory.npm# Optional eslint cache.eslintcache# Optional stylelint cache.stylelintcache# Optional REPL history.node_repl_history# Output of 'npm pack'*.tgz# Yarn Integrity file.yarn-integrity# dotenv environment variable files.env.env.*!.env.example# parcel-bundler cache (https://parceljs.org/).cache.parcel-cache# Next.js build output.nextout# Nuxt.js build / generate output.nuxtdist.output# Gatsby files.cache/# Comment in the public line in if your project uses Gatsby and not Next.js# https://nextjs.org/blog/next-9-1#public-directory-support# public# vuepress build output.vuepress/dist# vuepress v2.x temp directory.temp# Sveltekit cache directory.svelte-kit/# vitepress build output**/.vitepress/dist# vitepress cache directory**/.vitepress/cache# Docusaurus cache and generated files.docusaurus# Serverless directories.serverless/# FuseBox cache.fusebox/# DynamoDB Local files.dynamodb/# Firebase cache directory.firebase/# TernJS port file.tern-port# Stores Visual Studio Code versions used for testing Visual Studio Code extensions.vscode-test# pnpm.pnpm-store# yarn v3.pnp.*.yarn/*!.yarn/patches!.yarn/plugins!.yarn/releases!.yarn/sdks!.yarn/versions# Vite filesvite.config.js.timestamp-*vite.config.ts.timestamp-*.vite/
Vorlagenquelle: github/gitignore/Node.gitignore @356fd7b (2026-09-11) · CC0-1.0