js

فایل package-lock.json توی پروژه‌های جاوااسکریپتی چیه و چه کاربردی داره؟

Updated 1 year ago

فایل package-lock.json توی پروژه‌های جاوااسکریپتی چیه و چه کاربردی داره؟
June 22nd, 2023 / 10 views

درود دوستان! توی برنامه‌های جاوااسکریپتی حتماً فایل package-lock.json رو دیدیم. این فایل رو معمولاً ما توسعه‌دهنده‌ها خیلی به صورت مستقیم باهاش سر و کار نداریم. ولی خوبه که بدونیم این فایلِ کاملاً کاربردی، کمک می‌کنه که برنامهٔ ما زمانی که توی محیط‌های مختلف Deploy میشه یا توسط یک شخص دیگه توسعه داده میشه، رفتار و خروجی پایدار و قابل پیش‌بینی داشته باشه. توی این پست کوتاه می‌خوایم ویژگی و کاربرد این فایل رو بررسی کنیم.

فایل package-lock.json چیه؟ 🤔 این فایل رو با فایل package.json اشتباه نگیریم! فایل package-lock.json به صورت خودکار توسط ابزارهای مدیریت پکیج مثل npm و Yarn تولید میشه و توی اون، ورژن دقیق پکیج‌هایی که توی برنامه استفاده شده ذخیره میشه. وقتی پروژهٔ ما توی محیط‌های دیگه Deploy میشه یا یک توسعه‌دهندهٔ جدید قراره روی اون کار کنه، وجود فایل package-lock.json هنگام اجرای دستور npm install این اطمینان رو میده که دقیقاً همون ورژن از پکیج‌هایی برای ما نصب بشن که انتظار داریم. این کار باعث میشه که برنامهٔ ما توی محیط‌های مختلف رفتارهای یکسان و قابل پیش‌بینی داشته باشه.

شاید این سوال پیش بیاد که وقتی ورژن پکیج‌ها توی فایل package.json ذخیره شده، دیگه چه نیازی به فایل package-lock.json داریم. ابتدا فرض کنیم این محتویات فایل package.json برنامهٔ ما هست:

{
  "name": "my-app",
  "dependencies": {
    "react": "^17.0.0"
  }
}

وجود علامت ^ ابتدای ورژن react به این معنیه که می‌خوایم ورژن 17 ری‌اکت رو نصب کنیم و اینکه کدوم ورژن Minor مثل 17.1 یا 17.2 نصب بشن برامون مهم نیست.