Pinia 4 منتشر شد؛ فقط ESM و خطاهای بازنویسیشده
خلاصهٔ کاملتر
Pinia 4 منتشر شد؛ همون کتابخانهی رسمی مدیریت state برای Vue که حالا حدود ۱۴.۷ هزار ستاره روی گیتهاب داره. تو یادداشت انتشار اومده که این نسخه فقط تغییرهای شکستهی «از نظر فنی» داره، یعنی چیزی تو API روزمرهی شما عوض نشده و بیشتر بحث بستهبندی و ابزار جانبیه.
دو تا تغییر شکسته اینه: پکیج ESM-only شده، و @vue/devtools-api به نسخهی ۸ ارتقا پیدا کرده و از این به بعد باید جداگانه کنار Pinia نصب بشه. اگه پروژهت هنوز روی CommonJS ـه یا devtools-api رو بهعنوان وابستگی غیرمستقیم فرض کرده بودی، همین دو مورد کاریه که موقع ارتقا باید انجام بدی.
کار اصلی این نسخه ولی یه بازنویسی بزرگ روی خطاها و هشدارهای حالت توسعهست که با Nostics انجام شده. هدف اعلامشده اینه که مشکلهای تشخیصدادهشده راحتتر رفع بشن، هم توسط آدمها و هم توسط ایجنتها — نکتهای که نشون میده خوانا بودن پیام خطا برای ابزارهای خودکار هم داره به یه معیار طراحی تبدیل میشه.
در همین راستا چند diagnostic تازه اضافه شده: تشخیص پراپرتیهای نامعتبر موقع استفاده از storeToRefs و تشخیص مقدارهای اشتباه تو پلاگینها. کنارش storeToRefs حالا مقدارهای nullish رو بدون خطا رد میکنه و piniaSymbol هم export شده تا برای موارد پیشرفتهتر در دسترس باشه.
تو بخش رفع باگ هم چند مورد قابلتوجه هست: استفاده از Object.hasOwn مدرن بهجای روش قدیمی، رعایت مارکر skipHydrate روی آبجکتهای غیرساده در shouldHydrate، جلوگیری از ساخته شدن watcher تکراری وقتی یه callback دو بار subscribe میشه، قابلویرایش شدن getterهای settable تو devtools، و حفظ پراپرتیهایی که در زمان اجرا به refهای setup store اضافه شدن، موقع HMR.
نکات کلیدی:
- تغییرهای شکسته فقط فنیان: ESM-only و ارتقای @vue/devtools-api به v8
- از این به بعد @vue/devtools-api باید جدا کنار Pinia نصب بشه
- بازنویسی خطاها و هشدارها با Nostics برای رفع راحتتر توسط آدم و ایجنت
- diagnostic تازه برای storeToRefs و پلاگینها، بهعلاوهی export شدن piniaSymbol
- رفع باگ watcher تکراری، رعایت skipHydrate و حفظ پراپرتیهای runtime موقع HMR




