Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 16 вересня 2026

Laravel Vet: перегляд коду Composer-пакетів перед встановленням

Команда Laravel випустила новий пакет Laravel Vet, який дозволяє переглядати код, що composer update збирається записати у вашу директорію vendor/, та зберігає список довірених пакетів у файлі vet.json. Інструмент працює як плагін Composer і виконується після кожного install та перед кожним update.

Якщо ви знайомі з cargo vet зі світу Rust, то це та сама ідея, але для Composer. Суть проста: кожне оновлення приносить у ваш проект новий код, який ніхто з вашої команди не читав. Vet показує вам цей код по одному пакету за раз, перш ніж він потрапить до проекту. Коли ви довіряєте пакету, Vet запам'ятовує це, тож наступне оновлення запитає лише про те, що змінилося.

Інтеграція з AI-асистентами

Вам не потрібно читати все самостійно. Vet передає кожну зміну coding-агенту, який вже встановлений на вашій машині - це може бути Claude Code, Codex, Gemini або opencode. Агент читає код за вас і повідомляє результат: PASS або FAIL із зазначенням файлу та причини. Ви читаєте лише помилки, натискаєте Enter на решті та продовжуєте свою роботу.

Коли ви довіряєте пакету, Vet запам'ятовує це, і наступне оновлення запитає лише про зміни. Пакет, якому ніхто не довіряє, завершується з non-zero статусом, що робить інструмент корисним у збірках. Він працює з будь-яким проектом, що має composer.json - Laravel, Symfony, WordPress та звичайний PHP підтримуються повністю.

Чому це важливо

Кожне оновлення Composer записує тисячі рядків коду, які ви маєте або вручну перевіряти через читання diff'ів, або сліпо довіряти Packagist. З ростом кількості проблем безпеки аудит стає дедалі важливішим.

Цього року ми спостерігали низку новин про атаки на ланцюг постачання: від блокування malware та політик залежностей у Composer 2.10 до компрометації npm-пакету Axios, який почав розповсюджувати троян віддаленого доступу.

Як працює Vet

Vet вимагає PHP 8.4 або новішої версії. Встановіть його як development-залежність і дайте згоду, коли Composer запитає про дозвіл для плагіна:

composer require laravel/vet --dev

Спочатку позначте поточні пакети у vendor/ як довірені:

./vendor/bin/vet --init
INFO  Trusted [125] packages, and wrote [vet.json].

Це створює vet.json на основі файлів пакетів, які вже є на вашому диску. Команда записує вашу довіру до цих файлів без їх перегляду. Далі Vet перевіряє майбутні оновлення проти цього запису. Якщо оновлення містить недовірені зміни, Vet зупиняє його перед тим, як Composer запише нові файли.

Процес перегляду змін

Коли ви запускаєте composer update, Vet показує, які пакети потребують перегляду:

❯ composer update
to review (1)
carbonphp/carbon-doctrine-types 3.1.0 → 3.2.0 .............. 2 files changed

Інструмент показує детальний diff змін у кожному файлі, включаючи конкретні рядки коду, що були змінені.

Запустіть ./vendor/bin/vet у терміналі для перегляду змін. Ви можете прочитати зміни коду самостійно, а потім натиснути пробіл, щоб вибрати пакети, яким довіряєте. Або ж можете попросити coding-агента, встановленого на вашій машині, спочатку переглянути їх. Vet відображає результат агента поруч з кожним пакетом:

INFO  [claude] reviews [3] packages (58.1 KB). This takes a moment.
to review (3)
acme/logger 1.2.0 → 2.0.0 ................................. 12 files changed
│  FAIL   src/Ship.php reads .env and sends it to an unknown host
│         src/Ship.php  it posts the contents of [.env] to [telemetry.example.com]
acme/tooling 4.1.0 → 4.2.0 ................................. 8 files changed
│  WARN   the changes add two commands
│         The agent did not read [1] file, because it is too big. Read it yourself:
│         resources/schema.php  612.4 KB
carbonphp/carbon-doctrine-types 3.1.0 → 3.2.0 .............. 2 files changed
│  PASS   the changes narrow two return types

Інтерпретація результатів

PASS означає, що агент завершив перегляд і не виявив атак. FAIL ідентифікує файл і пояснює проблему, яку знайшов агент.

WARN означає, що перегляд неповний і потребує вашої уваги. Файл може бути занадто великим, містити нетекстові дані, або агент міг не повернути відповідь. SKIP означає, що Vet не надіслав жодних файлів агенту, оскільки нічого не змінилося або він не зміг прочитати файли пакета.

Vet за замовчуванням вибирає пакети з позначкою PASS. Перегляньте результати, скоригуйте вибір, а потім натисніть Enter, щоб зберегти пакети, яким ви довіряєте. Самі по собі результати агента не змінюють vet.json.

Структура vet.json

Vet зберігає ваш вибір у vet.json поруч з composer.json. Закомітьте цей файл до вашого репозиторію. Кожен запис містить довірену версію пакета та хеш - значення, розраховане на основі файлів пакета:

{
  "schema": 4,
  "require": {
    "carbonphp/carbon-doctrine-types": {
      "version": "3.2.1",
      "hash": "tree-v2:0f158f3b909fc01e691ed5f5121186056232b049031e7d3a914676d49881ece5"
    }
  }
}

Хеш охоплює кожен файл у пакеті. Якщо файли змінюються, навіть без нового номера версії, Vet вимагає ще один огляд. Vet завершується з помилкою, коли пакет недовірений, тож перевірка не проходить у вашій збірці, доки хтось не позначить цей пакет як довірений.

Поточний статус та додаткові інструменти

Vet зараз у бета-версії, тому поведінка може змінитися перед першим стабільним релізом. Якщо ви хочете додатковий рівень захисту, Heimdall встановлює політику мінімального віку для ваших Composer-залежностей, тож нові релізи мають "відлежатися" кілька днів перед встановленням.

Відвідайте GitHub-репозиторій для повної документації та щасливого аудиту!

0

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Fresh Package
Новини 19 вересня 2026

Fresh Package: новий скелет для розробки Laravel-пакетів з Testbench, CI та інтеграцією Boost

Fresh Package від Mazen Touati - це сучасний скелет для створення Laravel-пакетів, який включає тестове середовище, статичний аналіз, CI/CD, workbench-додаток та шаблони навичок для AI-агентів. Підтримує як backend-only, так і full-stack пакети.

5
Jev: модель, яка повертає рішення замість тексту - і вже є в Laravel AI SDK Рекомендовано
Новини 18 вересня 2026

Jev: модель, яка повертає рішення замість тексту - і вже є в Laravel AI SDK

TypeSafe AI випустила Jev - модель, яка не генерує текст, а повертає типізовані рішення з каліброваними ймовірностями за 70-500 мс. Через два дні підтримка приїхала в гілку 1.x пакета laravel/ai у вигляді API Classification з питаннями Boolean, Choice і Score.

Вакансії за темою

N-iX Нова
2 дні тому

Senior/ Lead PHP Engineer (with AI Skills), Toronto time zone

Старший/Lead PHP розробник з глибокою експертизою Laravel для побудови та інтеграції систем штучного інтелекту. Спеціаліст матиме відповідати за складні backend-функції, менторство інших розробників, проектування та впровадження AI-driven automation агентів в продукт. Вимоги: 6+ років досвіду на PHP, 4+ років Laravel, практичний досвід роботи з LLM API, контейнеризацією (Docker) та хмарними платформами, мова English Upper Intermediate+.

Гарант-Інфо
4 дні тому

Middle PHP Developer (Laravel), програміст

Middle PHP Developer для міжнародного B2B-продукту у телекомунікаціях. Розробка нового функціоналу на PHP 8.x/Laravel, підтримка зрілої кодової бази, робота з REST API, платіжними системами та MySQL. Вимоги: 2+ років комерційного досвіду PHP, впевнене знання Laravel, ООП/SOLID, Eloquent, Git, Docker. Буває плюсом: досвід Stripe/PayPal, AWS, WebSockets, E2E-тестування.

DL SOLUTION, ТОВ
9 днів тому

Full Stack Developer (PHP, React, Middle, Middle+)

Full Stack розробник для підтримки та розвитку аналітичного продукту перевірки контрагентів. Робота зі складною бізнес-логікою, базами даних та інтеграцією AI-рішень. Стек: PHP 8.x (Laravel/Symfony), React, MySQL, REST API. Вимоги: 3+ років комерційного досвіду, глибоке розуміння SQL, Git, Docker, CI/CD, Linux, OWASP.

Пакети за темою

Bagisto

bagisto/bagisto

Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.

28,130 v2.5.0-beta3 13 26

Laravel Debugbar

barryvdh/laravel-debugbar

Інтеграція PHP Debugbar у Laravel для відлагодження та аналізу роботи додатку.

19,276 v4.4.3 13 11