Penjelasan template .gitignore Node.js
Menjelaskan per aturan mengapa Node.gitignore mengabaikan node_modules, log, hasil build, .env, dan berbagai cache alat, serta hal yang perlu diperhatikan terkait lockfile dan Yarn Berry.
Node.gitignore adalah template untuk proyek JavaScript/TypeScript yang memasang dependensi dengan npm, Yarn, atau pnpm. Template ini tidak ditujukan untuk satu framework tertentu, melainkan mengumpulkan secara luas folder cache dan build yang dibuat oleh alat ekosistem seperti Next.js, Nuxt, Gatsby, SvelteKit, VitePress, Docusaurus, dan Serverless.
Intinya ada tiga: dependensi (node_modules/) yang muncul lagi saat dipasang, log dan file runtime yang muncul saat berjalan, dan file variabel lingkungan (.env) yang berbahaya jika di-commit. Sebaliknya, package.json dan lockfile tidak diabaikan oleh template ini dan harus di-commit.
Penjelasan per aturan
| Pola | Apa yang diabaikan dan mengapa |
|---|---|
node_modules/jspm_packages/web_modules/bower_components | Direktori dependensiBisa dibuat ulang kapan saja dengan npm install, jumlah filenya bisa puluhan ribu, dan berisi biner native khusus sistem operasi sehingga justru rusak jika dipakai apa adanya di lingkungan lain. Karena polanya tanpa garis miring, node_modules di paket turunan monorepo juga ikut tertangkap. |
logs*.lognpm-debug.log*yarn-debug.log*yarn-error.log*report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | Log dan laporan diagnostikLog debug yang ditinggalkan package manager saat gagal dan laporan diagnostik Node.js (process.report). Isinya memuat lingkungan dan path orang yang menjalankannya, dan selalu dibuat baru, jadi tidak ada alasan menyimpannya di riwayat. |
pids*.pid*.pid.lockcoverage*.lcov.nyc_outputlib-cov | Hasil runtime dan coverageFile ID proses dan hasil coverage pengujian. Coverage dihitung ulang di CI setiap kali, sehingga jika disimpan di repositori hanya menambah konflik. |
distout.next.nuxt.output.svelte-kit/build/Release*.tsbuildinfo | Hasil buildHasil yang dibuat oleh bundler dan framework. *.tsbuildinfo adalah informasi build inkremental TypeScript. Pola tanpa / di akhir seperti dist dan out juga mengabaikan file dengan nama yang sama, jadi jika ada file bernama demikian di kode sumber, persempit aturannya seperti /dist/. |
.env.env.*!.env.example | File variabel lingkunganFile yang berisi kunci API dan kata sandi DB. Varian seperti .env.local dan .env.production juga diblokir dengan .env.*, sedangkan .env.example yang hanya berisi daftar kunci tanpa nilai disertakan kembali dengan ! agar anggota tim tahu variabel apa yang dibutuhkan. |
.npm.eslintcache.stylelintcache.cache.parcel-cache.vite/.pnpm-store | Cache alatCache yang dipakai linter, bundler, dan package manager untuk mempercepat kerja. Jika dihapus akan dibuat ulang otomatis, dan isinya berbeda untuk setiap orang sehingga jika di-commit akan terus memunculkan perubahan yang tidak perlu. |
.pnp.*.yarn/*!.yarn/patches!.yarn/plugins!.yarn/releases!.yarn/sdks!.yarn/versions | Yarn Berry (2+)Strukturnya hanya mengecualikan isi .yarn/ (.yarn/*) lalu menghidupkan kembali subfolder yang perlu dibagikan dengan !. Jika direktorinya sendiri dikecualikan dengan .yarn/, git tidak melihat isinya sehingga aturan ! tidak berlaku. |
Hal yang perlu diperhatikan dalam praktik
- Jangan abaikan
package-lock.json,yarn.lock, danpnpm-lock.yaml, tetapi commit. Dokumentasi npm juga sangat menyarankan memasukkan lockfile ke kontrol sumber. - Jika Anda memakai Zero-Installs Yarn (cara yang meng-commit
.yarn/cache), hapus aturan.pnp.*dan tambahkan!.yarn/cache. - Jika
.envsudah terlanjur di-commit, aturan abaikan saja tidak akan menghilangkannya. Putuskan pelacakan dengangit rm --cached .env, lalu cabut dan terbitkan ulang kunci yang terekspos. .DS_StoremacOS dan pengaturan editor tidak ada di template ini, jadi pilih juga template macOS dan VisualStudioCode atau taruh di gitignore global.
Template asli
# 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/
Sumber template: github/gitignore/Node.gitignore @356fd7b (2026-09-11) · CC0-1.0