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

CPX: Інструмент для виконання Composer-пакетів без встановлення

CPX - це CLI-інструмент, який дозволяє запускати команди з будь-якого Composer-пакета без попереднього встановлення цього пакета у ваш проєкт. CPX для Composer - це те саме, що npx для npm.

Якщо ви коли-небудь встановлювали інструмент через composer global require і стикалися з конфліктом залежностей з іншим глобально встановленим пакетом, CPX вирішує цю проблему завдяки ізольованим залежностям. Кожен пакет встановлюється у власну директорію, окремо від залежностей вашого проєкту та глобального Composer, а потім команда виконується звідти. Повторні запуски тієї самої версії використовують існуюче встановлення, а CPX автоматично перевіряє оновлення.

Запуск невстановленого пакета

Передайте назву пакета, а потім команду та її аргументи. Назва пакета - це те, що ви б вказали у composer.json, підтримуються обмеження версій:

cpx friendsofphp/php-cs-fixer php-cs-fixer fix ./src
cpx friendsofphp/php-cs-fixer:^3.0 php-cs-fixer fix ./src

Коли пакет має один бінарний файл або його бінарник збігається з назвою пакета, можна не вказувати команду:

cpx friendsofphp/php-cs-fixer fix ./src

Якщо пакет має більше одного бінарника і ви не вказали конкретний, версія 2.0 запропонує вибрати потрібний.

Також можна вказати CPX директорію замість назви пакета, що корисно під час локальної розробки пакета:

cpx ../my-package --version

Директорія повинна містити валідний composer.json та встановлені залежності у vendor/autoload.php. CPX запускає оголошений бінарник безпосередньо з цієї директорії без копіювання, кешування чи іншого управління.

Локальні бінарники мають пріоритет

Це найважливіша зміна поведінки порівняно з версією 1.x. CPX тепер спочатку шукає бінарник у вашому проєкті перед встановленням ізольованої копії. Він піднімається вгору від поточної директорії, щоб знайти найближчий Composer-проєкт, і запускає відповідний бінарник з налаштованого bin-dir цього проєкту:

cpx pint                 # запускає vendor/bin/pint, якщо він є в проєкті
cpx phpunit --filter=Foo # запускає vendor/bin/phpunit, якщо присутній
cpx laravel/pint:^2.0    # використовує локальний pint, тільки якщо він задовольняє ^2.0

Отже, всередині проєкту cpx pint запускає версію, закріплену у вашому проєкті, а не найновішу. Коли локального бінарника немає, CPX встановлює та запускає ізольовану копію. Щоб примусово використати ізольовану копію, передайте --skip-local перед назвою пакета.

Аліаси тепер визначаєте ви

Версія 1.x мала фіксований список скорочень для популярних пакетів, тому cpx phpstan та cpx laravel працювали одразу. Цього списку більше немає у версії 2.0. Натомість ви самі визначаєте аліаси:

cpx alias phpstan/phpstan phpstan
cpx alias laravel/pint

Якщо не вказати назву аліаса, використовується коротка назва пакета, тому другий рядок створює аліас pint. Аліаси зберігаються у ~/.cpx/, команда cpx aliases виводить їх список, а cpx unalias <name> видаляє аліас. Можна створити аліас для конкретного бінарника з багатобінарного пакета.

Дві інші корисні команди управління: cpx installed показує пакети, які ви запускали через CPX, а cpx clean видаляє ті, що не використовувалися нещодавно (--all видаляє все). Зверніть увагу, що cpx list тепер показує доступні команди CPX (стандартна поведінка консолі), а не встановлені пакети.

Виконання PHP-файлів, Gist та REPL

Команди cpx exec та cpx tinker підходять для тимчасових файлів та швидких експериментів:

cpx exec script.php
cpx exec -r 'echo PHP_VERSION;'
cpx exec https://gist.github.com/user/id
cpx tinker

Підтримка Gist завантажує файл і виконує його відносно поточної директорії. Якщо gist містить кілька PHP-файлів, CPX запитає, який запустити, або можна додати якір файлу зі сторінки gist, щоб пропустити запит. Додавання SHA закріплює ревізію, а встановлення GITHUB_TOKEN допомагає обійти ліміт GitHub.

Обидві команди виконують підготовчу роботу перед запуском вашого коду. Автозавантажувач Composer визначається в поточній або батьківській директорії. Класи, які використовуються без імпорту, отримують псевдоніми там, де CPX може знайти збіг. У Laravel-проєкті додаток повністю завантажується з конфігурацією, фасадами, .env та доступною змінною $app; у Symfony-проєкті завантажується ядро і доступні $kernel та $container. Передайте --no-boot, щоб пропустити це. Ваш код виконується у власному PHP-процесі, тому не може конфліктувати з залежностями CPX, а коди exit() передаються далі.

Усередині цих скриптів cpx_require() завантажує пакет на вимогу:

cpx_require('nesbot/carbon');
echo Carbon\Carbon::now();

У Laravel-проєкті з встановленим laravel/tinker команда cpx tinker передає виконання у власний php artisan tinker вашого проєкту і пробрасує аргументи, такі як --execute. У всіх інших випадках відкривається PsySH-оболонка з завантаженим проєктом.

Вивід для агентів

CPX визначає, коли він не підключений до інтерактивного терміналу. Це охоплює перенаправлення stdin, передачу --no-interaction або -n, а також виконання всередині AI-агента, який ідентифікується через laravel/agent-detector.

У цьому режимі дочірні процеси не отримують TTY, запити повертають значення за замовчуванням, а команди управління (installed, aliases, alias, unalias, clean та update) повертають один рядок JSON:

{
  "success": true,
  "errors": [],
  "summary": {
    "packages": [
      { "name": "laravel/pint", "last_run": "2024-01-02 03:04:05" }
    ]
  }
}

Запуск пакетів виводить лише результат роботи самого інструменту, без прогрес-індикаторів CPX. Помилки на рівні CPX, такі як нерозпізнана команда або неможливість встановлення пакета, також повідомляються у форматі JSON. Передайте --json, щоб отримати такий самий вивід в інтерактивному терміналі. Перезапис існуючого аліаса в неінтерактивному режимі вимагає --force.

Встановлення та оновлення

CPX 2.0 вимагає PHP 8.3 або вище. Встановіть його глобально через Composer і переконайтеся, що глобальна bin директорія Composer додана до вашого PATH:

composer global require cpx/cpx

Додаткова інформація

CPX спочатку створив Liam Hammett. CPX 2.0 тепер є офіційним пакетом laravel/cpx з кількома контриб'юторами від Laravel. Якщо хочете побачити живу демонстрацію, Taylor Otwell представив і продемонстрував CPX 2.0 під час свого виступу на Laracon US 2026 у Бостоні.

Повний довідник команд доступний у репозиторії laravel/cpx на GitHub. Якщо ви використовуєте версію 1.x, ознайомтеся з посібником з оновлення з 1.x до 2.x, а також відвідайте офіційну сторінку на cpx.dev.

1

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

Коментарі

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

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

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

Новини 09 листопада 2026

Laravel Herd 2.0: Herd Studio, workspaces і автоматичний dev-сервер

Herd 2.0 для macOS і Windows додав Herd Studio - панель у браузері для роботи з coding-агентами поруч із сайтом .test, ізольовані workspaces на окремих гілках і піддоменах та автоматичний запуск php artisan dev. Усе AI вимикається, а базовий Herd лишається безкоштовним.

Новини 09 листопада 2026

Вразливості в PHPUnit 13.4 і symfony/yaml: що оновити в Laravel-проєкті

PHPUnit 13.4.0-13.4.3 виконував код PHPT-тестів зі спільного каталогу /tmp/phpunit-phpt, який міг підмінити інший користувач машини. Виправлення - 13.4.4, а користувачам Pest 5 треба оновити сам Pest до 5.3.4. Заразом - нагадування про DoS у symfony/yaml, виправлений у 5.4.54, 6.4.45, 7.4.18 і 8.1.6.

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

Starlight Media
4 дні тому

Senior Full-Stack Developer (PHP / Go / Vue.js)

Senior Full-Stack розробник матиме розвивати й підтримувати існуючі веб-платформи, писати модулі, сервіси та API, а також розробляти клієнтську частину на Vue.js і Vanilla JS. Основний стек: PHP 8.x з Yii2 та/або Laravel, Go для сервісів, MySQL/MariaDB, REST API і Webhooks. Вимоги: досвід від 3 років, знання ООП і шаблонів проєктування, ES6+, Vue.js, SPA, Git, Docker і Composer; англійська B1-B2.

Full stack developer (e-commerce продукт)

Laravel Київ Офіс B2B Middle ₴100,000 - ₴140,000

Full Stack розробник для постійної in-house роботи над розвитком e-commerce продукту: адаптивні веб-інтерфейси (desktop, tablet, mobile), backend, інтеграції з зовнішніми системами через REST API, оптимізація БД, пошуку та фільтрації. Стек: PHP, Laravel, JavaScript, HTML, CSS, Blade, Tailwind CSS, MySQL. Вимоги: комерційний досвід PHP/Laravel від 3 років, впевнене володіння JavaScript, HTML, CSS, знання Git, Composer, Linux, принципів ООП та SOLID.

АЛЛО
27 днів тому

Magento Developer

Розробка, підтримка та вдосконалення рішень на базі Magento 2 / Adobe Commerce: створення кастомних модулів, плагінів і розширень, оптимізація продуктивності інтернет-магазину та роботи з великими каталогами товарів, участь у code review і технічному плануванні. Потрібен комерційний досвід на Magento 2, впевнене володіння PHP, знання OOP/SOLID, Composer, PSR, Magento API, MySQL, Redis, Elasticsearch, Docker, CI/CD та Git. Symfony або Laravel будуть перевагою.

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

Kalimera

welldigit/kalimera

Interactive installer that scaffolds Laravel applications the Well Digit way.

v1.0.0 16

Bagisto

bagisto/bagisto

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

28,335 v2.5.1 13 28