Template .gitignore do Node.js explicado
Explica regra por regra por que o Node.gitignore ignora node_modules, logs, resultados de build, .env e caches de ferramentas, e resume os cuidados com lockfiles e Yarn Berry.
O Node.gitignore é o template para projetos JavaScript/TypeScript que instalam dependências com npm, Yarn ou pnpm. Não é voltado a um único framework: reúne de forma ampla as pastas de cache e de build geradas por ferramentas do ecossistema como Next.js, Nuxt, Gatsby, SvelteKit, VitePress, Docusaurus e Serverless.
O essencial são três coisas: as dependências que voltam a ser criadas ao instalar (node_modules/), os logs e arquivos de execução gerados durante a execução e os arquivos de variáveis de ambiente que não convém commitar (.env). Por outro lado, package.json e o lockfile não são ignorados por este template: são arquivos que devem ser commitados.
Explicação regra por regra
| Padrão | O que ignora e por quê |
|---|---|
node_modules/jspm_packages/web_modules/bower_components | Diretórios de dependênciasPodem ser recriados a qualquer momento com npm install, chegam a dezenas de milhares de arquivos e misturam binários nativos de cada sistema operacional, então usá-los como estão em outro ambiente pode até quebrá-los. Como o padrão não tem barra, os node_modules dos subpacotes de um monorepo também são pegos. |
logs*.lognpm-debug.log*yarn-debug.log*yarn-error.log*report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | Logs e relatórios de diagnósticoSão os logs de depuração que o gerenciador de pacotes deixa quando falha e os relatórios de diagnóstico do Node.js (process.report). Contêm o ambiente e os caminhos de quem executou e são gerados de novo a cada vez, então não há motivo para mantê-los no histórico. |
pids*.pid*.pid.lockcoverage*.lcov.nyc_outputlib-cov | Artefatos de execução e coberturaSão arquivos de ID de processo e resultados de cobertura de testes. A cobertura é recalculada a cada execução da CI, então mantê-la no repositório só aumenta os conflitos. |
distout.next.nuxt.output.svelte-kit/build/Release*.tsbuildinfo | Resultados de buildSão os produtos gerados por bundlers e frameworks. *.tsbuildinfo é a informação de build incremental do TypeScript. Padrões sem / no final, como dist e out, também ignoram arquivos com esse nome, então, se o código-fonte tiver um arquivo assim, é preciso restringir a regra, por exemplo para /dist/. |
.env.env.*!.env.example | Arquivos de variáveis de ambienteSão arquivos que contêm chaves de API e senhas de banco de dados. Variantes como .env.local e .env.production também são bloqueadas por .env.*, e o .env.example, que lista só as chaves sem valores, é incluído de novo com ! para que a equipe saiba quais variáveis são necessárias. |
.npm.eslintcache.stylelintcache.cache.parcel-cache.vite/.pnpm-store | Caches de ferramentasSão caches que linters, bundlers e gerenciadores de pacotes usam para ganhar velocidade. Se apagados, são recriados automaticamente, e o conteúdo varia de pessoa para pessoa, então commitá-los gera mudanças desnecessárias o tempo todo. |
.pnp.*.yarn/*!.yarn/patches!.yarn/plugins!.yarn/releases!.yarn/sdks!.yarn/versions | Yarn Berry (2+)A estrutura exclui apenas o conteúdo de .yarn/ (.yarn/*) e recupera com ! as subpastas que precisam ser compartilhadas. Se o próprio diretório fosse excluído com .yarn/, o git não olharia dentro dele e as regras ! não teriam efeito. |
Cuidados na prática
- Não ignore
package-lock.json,yarn.locknempnpm-lock.yaml: commite-os. A documentação do npm também recomenda fortemente colocar o lockfile no controle de versão. - Se você usa o Zero-Installs do Yarn (commitar
.yarn/cache), precisa remover a regra.pnp.*e adicionar!.yarn/cache. - Se o
.envjá foi commitado, uma regra de ignorar não basta para que ele desapareça. Interrompa o rastreamento comgit rm --cached .enve revogue e emita de novo as chaves expostas. - O
.DS_Storedo macOS e as configurações do editor não estão neste template, então escolha também os templates macOS e VisualStudioCode ou coloque-os no gitignore global.
Template 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/
Origem dos templates: github/gitignore/Node.gitignore @356fd7b (2026-09-11) · CC0-1.0