npm (Node Package Manager) هي أداة Node الافتراضية لتثبيت وإدارة حزم الطرف الثالث (التبعيات) وتشغيل سكريبتات المشروع. ملفان يحددان المشروع: package.json (البيان) و package-lock.json (شجرة التبعيات الدقيقة).
package.json — بيان المشروع
npm (Node Package Manager) هي أداة Node الافتراضية لتثبيت وإدارة حزم الطرف الثالث (التبعيات) وتشغيل سكريبتات المشروع. ملفان يحددان المشروع: package.json (البيان) و package-lock.json (شجرة التبعيات الدقيقة).
يسجل البيانات الوصفية والسكريبتات والتبعيات. ^4.18.0 هو نطاق semver — ^ يسمح بتحديثات الإصدار الثانوي والتصحيح المتوافقة (4.x.x لكن ليس 5.0.0).
package.json says: express ^4.18.0 (a RANGE — could install 4.18.0 or 4.19.2...)
package-lock.json: express 4.18.2 (the EXACT version + every nested dependency)
يثبت ملف القفل الإصدار الدقيق لكل حزمة (بما فيها التبعيات المتعدية) التي تم تثبيتها. هذا يضمن أن الجميع في الفريق — و CI و الإنتاج — يحصلون على شجرة التبعيات المتطابقة، مما يمنع أخطاء "يعمل على جهازي" من انجراف الإصدار.
npm install # install all deps from package.json (updates lockfile)
npm install express # add a dependency
npm install -D vitest # add a devDependency
npm ci # install EXACTLY from the lockfile (used in CI — fast, strict)
npm run dev # run a script defined in package.json
npm ci (مقابل npm install) يثبت بصرامة من ملف القفل دون تعديله — الأمر الصحيح لتكرار CI والإنتاج.
✓ ALWAYS commit package-lock.json → reproducible installs across the team & CI
npm وهذان الملفان هما أساس كل مشروع Node.
فهم package.json (التبعيات مقابل devDependencies، نطاقات semver، السكريبتات) وخاصة لماذا يوجد ملف القفل (التثبيتات الحتمية والقابلة للتكرار لشجرة التبعيات بأكملها) أمر ضروري — الالتزام بملف القفل واستخدام npm ci في CI يمنع الأخطاء الدقيقة والصعبة في التصحيح الناجمة عن حصول زملاء العمل أو الإنتاج على إصدارات حزمة مختلفة.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع