شرح قالب .gitignore لـ Node.js
شرح قاعدة بقاعدة لسبب تجاهل Node.gitignore لمجلد node_modules والسجلات ومخرجات البناء و.env وذاكرات التخزين المؤقت للأدوات، مع ملاحظات حول ملفات القفل (lockfile) وYarn Berry.
Node.gitignore قالب لمشاريع JavaScript/TypeScript التي تثبّت الاعتماديات عبر npm أو Yarn أو pnpm. لا يخص إطار عمل واحدًا، بل يجمع على نطاق واسع مجلدات التخزين المؤقت والبناء التي تنشئها أدوات المنظومة مثل Next.js وNuxt وGatsby وSvelteKit وVitePress وDocusaurus وServerless.
جوهره ثلاثة أمور: الاعتماديات التي تُنشأ من جديد عند التثبيت (node_modules/)، والسجلات وملفات وقت التشغيل الناتجة أثناء التنفيذ، وملفات متغيرات البيئة التي يُسبب إيداعها مشكلات (.env). في المقابل، لا يتجاهل هذا القالب package.json وملف القفل، وهي ملفات يجب إيداعها.
شرح القواعد
| النمط | ما الذي يتجاهله ولماذا |
|---|---|
node_modules/jspm_packages/web_modules/bower_components | مجلدات الاعتمادياتيمكن إعادة إنشائها في أي وقت عبر npm install، ويبلغ عدد ملفاتها عشرات الآلاف، وتختلط فيها ملفات ثنائية أصلية خاصة بكل نظام تشغيل، فاستخدامها كما هي في بيئة أخرى يؤدي إلى أعطال. ولأن النمط بلا شرطة مائلة، فإنه يطابق أيضًا node_modules الموجودة في الحزم الفرعية داخل المستودع الأحادي (monorepo). |
logs*.lognpm-debug.log*yarn-debug.log*yarn-error.log*report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | السجلات وتقارير التشخيصسجلات التصحيح التي يتركها مدير الحزم عند الفشل، وتقارير التشخيص في Node.js (process.report). تتضمن بيئة من شغّلها ومساراته، وتُنشأ من جديد كل مرة، فلا سبب لإبقائها في السجل التاريخي. |
pids*.pid*.pid.lockcoverage*.lcov.nyc_outputlib-cov | مخرجات وقت التشغيل والتغطيةملفات معرّفات العمليات ونتائج تغطية الاختبارات. التغطية قيمة تُحسب من جديد في CI كل مرة، فوضعها في المستودع لا يزيد إلا التعارضات. |
distout.next.nuxt.output.svelte-kit/build/Release*.tsbuildinfo | نتائج البناءمخرجات أدوات التجميع (bundler) والأطر. *.tsbuildinfo معلومات البناء التزايدي في TypeScript. الأنماط التي لا تنتهي بـ / مثل dist وout تتجاهل أيضًا الملفات التي تحمل الاسم نفسه، فإن وُجد في الشيفرة المصدرية ملف بهذا الاسم فيجب تضييق القاعدة إلى شكل مثل /dist/. |
.env.env.*!.env.example | ملفات متغيرات البيئةملفات تحوي مفاتيح API وكلمات مرور قواعد البيانات. تُحجب المتغيرات مثل .env.local و.env.production عبر .env.*، ويُعاد تضمين .env.example الذي يسرد أسماء المتغيرات بلا قيم عبر ! ليعرف أعضاء الفريق المتغيرات المطلوبة. |
.npm.eslintcache.stylelintcache.cache.parcel-cache.vite/.pnpm-store | ذاكرات التخزين المؤقت للأدواتذاكرات مؤقتة تستخدمها أدوات الفحص (linter) والتجميع ومديرو الحزم لتسريع العمل. تُعاد إنشاؤها تلقائيًا إذا حُذفت، ويختلف محتواها من شخص لآخر، فإيداعها يولّد تغييرات غير ضرورية باستمرار. |
.pnp.*.yarn/*!.yarn/patches!.yarn/plugins!.yarn/releases!.yarn/sdks!.yarn/versions | Yarn Berry (الإصدار 2 فأحدث)بنية تستبعد محتوى .yarn/ فقط (.yarn/*) ثم تعيد المجلدات الفرعية التي تحتاج إلى مشاركة عبر !. لو استُبعد المجلد نفسه عبر .yarn/ لما نظر git داخله، ولما عملت قواعد !. |
ملاحظات عملية
- لا تتجاهل
package-lock.jsonوyarn.lockوpnpm-lock.yaml، بل أودِعها. توصي وثائق npm بقوة بوضع ملف القفل تحت إدارة الشيفرة المصدرية. - إذا كنت تستخدم Zero-Installs في Yarn (أي إيداع
.yarn/cache)، فاحذف قاعدة.pnp.*وأضف!.yarn/cache. - إذا كنت قد أودعت
.envمسبقًا، فلن تكفي قاعدة التجاهل وحدها لإزالته. أوقف تتبعه عبرgit rm --cached .env، وأبطل المفاتيح المكشوفة وأعد إصدارها. - لا يتضمن هذا القالب
.DS_Storeفي macOS ولا إعدادات المحررات، فاختر معه قالبي macOS وVisualStudioCode أو ضعها في ملف gitignore العام.
القالب الأصلي
# 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/
مصدر القوالب: github/gitignore/Node.gitignore @356fd7b (2026-09-11) · CC0-1.0