Syncpack: مدیریت نسخههای وابستگی در مونورپو
خلاصهٔ کاملتر
اگه روی یه مونورپوی بزرگ جاوااسکریپتی کار کردی، احتمالاً دردسر ناهماهنگی نسخههای وابستگیها رو حس کردی. یه پکیج از React نسخه ۱۸ استفاده میکنه، یکی دیگه نسخه ۱۷، و یکی هم ۱۸.۲.۰ با دقت کامل — این وضعیت میتونه به باگهای عجیب و غریب منجر بشه. Syncpack دقیقاً برای حل همین مشکل ساخته شده.
Syncpack یه ابزار CLIه که نسخه ۱۴ش الان در دسترسه و توسط شرکتهای بزرگی مثل AWS، Vercel، Microsoft، Cloudflare، Salesforce و Electron استفاده میشه. کارش اینه که همه فایلهای package.json پروژهات رو بررسی کنه و مطمئن بشه نسخه وابستگیها در سرتاسر مونورپو یکدسته و هماهنگه.
سریعترین راه برای امتحان کردنش اینه که بدون نصب، مستقیم با npx اجراش کنی:
npx syncpack list --dependency-types prodاین دستور تمام وابستگیهای production پروژه رو لیست میکنه. اگه ترمینالت رنگ و کد خطا نشون میده، میتونی روی هر خطا کلیک کنی و مستقیم به مستندات مربوطه بری.
برای اینکه فقط وابستگیهایی که مشکل دارن رو ببینی، از دستور lint استفاده میکنی. بعد از اینکه تغییرات پیشنهادی رو بررسی کردی، با دستور fix میتونی همه چیز رو بهصورت خودکار درست کنی:
syncpack lint --dependency-types prod
syncpack fix --dependency-types prodیه قابلیت کاربردی دیگه، فیلتر کردن روی اسم وابستگیهاست. مثلاً میتونی فقط وضعیت React رو چک کنی یا همه پکیجهای زیر اسکوپ @types رو ببینی:
syncpack list --dependencies '@types/**'
syncpack update --check --dependencies reactSyncpack از طریق یه فایل .syncpackrc قابل تنظیمه. مفهوم اصلی پیکربندی «Version Groups» هست که بهت اجازه میده قوانین مختلف برای بخشهای مختلف پروژهات تعریف کنی. مثلاً میتونی بگی فقط production dependencies باید sync بشن و بقیه نادیده گرفته بشن:
{
"versionGroups": [
{
"label": "Sync all production dependencies",
"dependencyTypes": ["prod"]
},
{
"label": "Ignore everything else",
"isIgnored": true
}
]
}یه کانفیگ خیلی محبوب توی مونورپوهایی که از workspace استفاده میکنن اینه که مطمئن بشی پکیجهای داخلی همیشه با پروتکل workspace:* رفرنس بشن. این کار از اشتباهات رایج در نسخهگذاری وابستگیهای داخلی جلوگیری میکنه.
علاوه بر مدیریت نسخهها، Syncpack میتونه فایلهای package.json رو مرتب و فرمت کنه، وابستگیهای ممنوعه رو شناسایی کنه، و با کانفیگ Semver Groups مشخص کنه کجا از ^ و کجا از ~ یا نسخه exact استفاده بشه.
نکات کلیدی:
- Syncpack ابزار CLI برای هماهنگسازی نسخه وابستگیها در مونورپوهای جاوااسکریپته
- از دستورهای list، lint، fix و update برای مشاهده، بررسی و اصلاح نسخهها استفاده میکنه
- با فایل .syncpackrc و مفهوم Version Groups قابل شخصیسازی دقیقه
- از فیلتر روی اسم پکیج، نوع وابستگی (prod/dev) و نوع semver پشتیبانی میکنه
- بعد از اجرای fix یا update حتماً باید lockfile رو با package manager خودت آپدیت کنی
- شرکتهای بزرگی مثل AWS، Vercel، Microsoft و Cloudflare ازش استفاده میکنن




