لاراول Vet؛ vendor رو چشمبسته قبول نکن
خلاصهٔ کاملتر
به گزارش لاراولنیوز، Laravel Vet پکیج تازهای از تیم لاراوله که نشون میده composer update قراره چه کدی توی پوشهٔ vendor/ بنویسه، و پکیجهایی رو که بهشون اعتماد کردی توی فایل vet.json ثبت میکنه. به شکل پلاگین Composer نصب میشه، پس بعد از هر install اجرا میشه و قبل از اینکه update چیزی بنویسه جلوش رو میگیره. ایدهٔ پشتش همون cargo vet دنیای Rust ـه.
منطقش اینه که هر آپدیت هزاران خط کد تازه وارد پروژه میکنه که هیچکس تو تیم نخونده، و تا حالا یا باید دیفها رو دستی میخوندی یا چشمبسته به Packagist اعتماد میکردی. مقاله به موج اخبار حملهٔ زنجیرهٔ تأمین امسال اشاره میکنه، از سد کردن بدافزار و سیاستهای وابستگی تو Composer 2.10 تا پکیج Axios روی npm که یه تروجان دسترسی از راه دور توش جاسازی شده بود.
نصبش PHP 8.4 به بالا میخواد و بهعنوان وابستگی dev اضافه میشه. اول یه بار با --init هرچی الان توی vendor/ هست بهعنوان مورد اعتماد ثبت میشه، مثلاً «Trusted [125] packages». این کار فقط وضعیت فعلی دیسک رو ثبت میکنه و چیزی رو بازبینی نمیکنه. از اون به بعد هر آپدیتی که تغییر تأییدنشده داشته باشه متوقف میشه، قبل از اینکه Composer فایل تازه بنویسه.
وقتی ./vendor/bin/vet رو تو ترمینال اجرا میکنی، میتونی دیفها رو خودت بخونی و با اسپیس پکیجهای قابلاعتماد رو انتخاب کنی، یا کار رو بسپری به ایجنت کدنویسی که روی سیستمت هست، مثل Claude Code، Codex، Gemini یا opencode. Vet نتیجهٔ ایجنت رو کنار هر پکیج نشون میده و پیشفرض پکیجهای PASS رو تیک میزنه، ولی تا خودت Enter نزنی چیزی توی vet.json عوض نمیشه.
نتیجهٔ ایجنت چهار حالت داره. PASS یعنی بازبینی تموم شد و حملهای گزارش نشد. FAIL فایل و دلیل رو میگه، مثل نمونهٔ مقاله که یه فایل محتوای .env رو برمیداره و به یه هاست ناشناس پست میکنه. WARN یعنی بازبینی ناقص مونده و باید خودت نگاه کنی، مثلاً فایل خیلی بزرگ بوده یا متنی نبوده. SKIP یعنی اصلاً فایلی برای ایجنت فرستاده نشده.
فایل vet.json کنار composer.json ذخیره میشه و باید commit بشه. هر ورودی نسخهٔ تأییدشده و یه هش داره که از روی همهٔ فایلهای پکیج حساب شده، پس اگه فایلها عوض بشن حتی بدون بالا رفتن شمارهٔ نسخه، Vet دوباره بازبینی میخواد. پکیج تأییدنشده خروجی خطا میده، یعنی بیلد رد میشه تا یکی بازبینیش کنه. فعلاً بتاست و رفتارش ممکنه تا نسخهٔ پایدار عوض بشه.
نکات کلیدی:
- نیازمند PHP 8.4 به بالا و نصب بهعنوان وابستگی dev
- فایل vet.json نسخه و هش درختی هر پکیج تأییدشده رو نگه میداره و باید commit بشه
- هش روی همهٔ فایلهای پکیج حساب میشه، پس تغییر فایل بدون تغییر نسخه هم بازبینی لازم داره
- چهار وضعیت بازبینی ایجنت: PASS، FAIL، WARN و SKIP
- پکیج تأییدنشده خروجی غیرصفر میده، پس تو CI بیلد رد میشه
- با هر پروژهای که composer.json داره کار میکنه: لاراول، Symfony، وردپرس و PHP خام




