Plantilla .gitignore de Node.js explicada
Explica regla por regla por qué Node.gitignore ignora node_modules, registros, resultados de compilación, .env y cachés de herramientas, y resume las precauciones sobre lockfiles y Yarn Berry.
Node.gitignore es la plantilla para proyectos JavaScript/TypeScript que instalan dependencias con npm, Yarn o pnpm. No está pensada para un solo framework: reúne de forma amplia las carpetas de caché y compilación que generan herramientas del ecosistema como Next.js, Nuxt, Gatsby, SvelteKit, VitePress, Docusaurus y Serverless.
Lo esencial son tres cosas: las dependencias que se regeneran al instalar (node_modules/), los registros y archivos de ejecución que aparecen al ejecutar, y los archivos de variables de entorno que no conviene confirmar (.env). En cambio, package.json y el lockfile no los ignora esta plantilla: son archivos que se deben confirmar.
Explicación regla por regla
| Patrón | Qué ignora y por qué |
|---|---|
node_modules/jspm_packages/web_modules/bower_components | Directorios de dependenciasSe pueden recrear en cualquier momento con npm install, llegan a decenas de miles de archivos y mezclan binarios nativos de cada sistema operativo, así que usarlos tal cual en otro entorno puede romperlos. Como el patrón no lleva barra, también se ignoran los node_modules de los subpaquetes de un monorepo. |
logs*.lognpm-debug.log*yarn-debug.log*yarn-error.log*report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | Registros e informes de diagnósticoSon los registros de depuración que deja el gestor de paquetes cuando falla y los informes de diagnóstico de Node.js (process.report). Contienen el entorno y las rutas de quien los ejecutó y se generan de nuevo cada vez, así que no hay motivo para guardarlos en el historial. |
pids*.pid*.pid.lockcoverage*.lcov.nyc_outputlib-cov | Artefactos de ejecución y coberturaSon archivos de ID de proceso y resultados de cobertura de pruebas. La cobertura se recalcula en cada ejecución de CI, así que guardarla en el repositorio solo multiplica los conflictos. |
distout.next.nuxt.output.svelte-kit/build/Release*.tsbuildinfo | Resultados de compilaciónSon los productos generados por empaquetadores y frameworks. *.tsbuildinfo es la información de compilación incremental de TypeScript. Los patrones sin / final como dist y out también ignoran archivos con ese nombre, así que si el código fuente tiene un archivo así, hay que acotar la regla, por ejemplo a /dist/. |
.env.env.*!.env.example | Archivos de variables de entornoSon archivos que contienen claves de API y contraseñas de bases de datos. Variantes como .env.local o .env.production también se bloquean con .env.*, y .env.example, que solo lista las claves sin valores, se vuelve a incluir con ! para que el equipo sepa qué variables hacen falta. |
.npm.eslintcache.stylelintcache.cache.parcel-cache.vite/.pnpm-store | Cachés de herramientasSon cachés que usan linters, empaquetadores y gestores de paquetes para ganar velocidad. Se regeneran solas si se borran y su contenido varía según la persona, así que confirmarlas produce cambios innecesarios constantes. |
.pnp.*.yarn/*!.yarn/patches!.yarn/plugins!.yarn/releases!.yarn/sdks!.yarn/versions | Yarn Berry (2+)La estructura excluye solo el contenido de .yarn/ (.yarn/*) y recupera con ! las subcarpetas que deben compartirse. Si se excluyera el directorio mismo con .yarn/, git no miraría dentro y las reglas ! no tendrían efecto. |
Precauciones en la práctica
- No ignores
package-lock.json,yarn.locknipnpm-lock.yaml: confírmalos. La documentación de npm también recomienda encarecidamente incluir el lockfile en el control de versiones. - Si usas Zero-Installs de Yarn (confirmar
.yarn/cache), debes eliminar la regla.pnp.*y añadir!.yarn/cache. - Si ya confirmaste
.env, una regla de ignorar no basta para que desaparezca. Corta el seguimiento congit rm --cached .envy revoca y vuelve a emitir las claves expuestas. - El
.DS_Storede macOS y los ajustes del editor no están en esta plantilla, así que elige también las plantillas macOS y VisualStudioCode o ponlos en el gitignore global.
Plantilla original
# 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/
Origen de las plantillas: github/gitignore/Node.gitignore @356fd7b (2026-09-11) · CC0-1.0