Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 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-репозиторій для повної документації та щасливого аудиту!

15

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

Коментарі

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

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

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

Laravel AI SDK на практиці
Новини 09 жовтня 2026

Laravel AI SDK на практиці: агент, що стоїть за There There

Фрік Ван дер Гертен розповідає, як у Spatie побудували AI-шар хелпдеска There There на Laravel AI SDK: клас агента, інструменти з типізованою JSON-схемою та делегування роботи звичайним domain-діям.

9
CSRF і завантаження
Новини 09 жовтня 2026

Порада з безпеки: як завантаження файлів може обійти захист від CSRF

Стівен Ріс-Картер пояснює, чому файли користувачів варто віддавати з окремого домену: HTML і JS у межах основного застосунку дають доступ до cookie та CSRF-токенів.

18

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

N-iX Нова
Вчора

Senior/ Lead PHP Engineer (with AI Skills) (#5828)

Розробка та підтримка backend-сервісів і API на PHP та Laravel з повним циклом володіння фічами від дизайну до моніторингу. Ключове завдання - інтеграція агентних AI-workflow (LLM-агенти, tool calling) у продукт і внутрішні інструменти, а також менторство інших інженерів. Вимоги: 6+ років PHP, 4+ роки з Laravel, досвід GenAI, знання MySQL/PostgreSQL, Docker та хмарних платформ, робота за часовим поясом EDT.

Backend Developer Middle

Розробник backend для web і мобільних застосунків. Основний стек: PHP, Laravel, WordPress. Очікується досвід роботи з REST API, базами даних (MySQL, PostgreSQL, MS SQL), інтеграціями зовнішніх сервісів, написанням тестів. Вимагається практичний досвід Laravel та впевнене знання PHP, ООП, SOLID, Git, Linux. Робота з командою над різноплановими проєктами.

GGLUXOUTLET
7 днів тому

Senior+/Tech Lead Full-Stack WordPress Developer / Code Architect

Досвідчений Senior+/Tech Lead Full-Stack WordPress розробник для проєктування та розробки високонавантажених e-commerce рішень. Потрібні глибокі знання WordPress Core, WooCommerce, PHP 8.1+ з SOLID/ООП, React/Next.js для фронтенду, Python для автоматизації, DevOps (VPS, Docker, CI/CD) та AI-інтеграцій. Роль включає архітектуру, код-рев'ю, менторство і комунікацію з бізнесом. Мінімум 7 років досвіду, з них 3+ на WordPress/WooCommerce у високонавантажених проєктах.

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

Bagisto

bagisto/bagisto

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

28,221 v2.5.0 13 26

Laravel Debugbar

barryvdh/laravel-debugbar

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

19,285 v4.4.4 13 11