Composer, менеджер залежностей для PHP, був випущений близько 8 років тому, а сьогодні опублікували нову версію, 2.0. За ці роки Composer отримав безліч нових функцій і не відставав від стандартів PHP. Друга версія сумісна зі старими проєктами, але привнесе ще кілька чудових нових функцій. У цій статті розповім про них докладніше.
Прискорення та оптимізація
У цьому релізі була покращена продуктивність. Тепер він не враховує вже встановлені пакети, в результаті оновлення проходить набагато швидше. Також покращили роботу з пам'яттю і процесором.
Команда установки стала розумнішою. Тепер вона не змінює теку vendor
до тих пір, поки не гарантує, що всі пакети встановлені. Це дозволяє уникнути втрати часу на їх видалення в разі помилок під час процесу.
Однією з кращих функцій, для мене, стало паралельне завантаження, яке тепер підтримується з коробки, і нам не потрібно встановлювати додаткові пакети, як hirak/prestissimo, щоб це працювало.
Підтримка офлайн
Composer представив можливість використовувати його в офлайн режимі. Це може бути цікаво для бенчмарків або при виникненні проблем з підключенням до інтернету, тому вам не потрібно видаляти Composer install/update зі списку команд.
Щоб це запрацювало, потрібно додати COMPOSER_DISABLE_NETWORK=1
при виконанні команд:
COMPOSER_DISABLE_NETWORK=1 composer install
Або встановіть його в змінних середовища. Він видасть попередження про те, що мережа відключена:
https://repo.packagist.org could not be fully loaded (Network disabled, request canceled: https://repo.packagist.org/packages.json), package information was loaded from the local cache and may be out of date
крім того, ви побачите повідомлення для пакетів, без кешування:
The required git reference for gabrielanhaia/laravel-circuit-breaker is not in cache and network is disabled, aborting
Підтримка --dry-run для "require" та "remove"
Ця опція вже була доступна при оновленні пакетів composer update --dry-run
. Вона дозволяє нам побачити, що станеться при запуску команди, просто відображаючи дані в терміналі, без реальних змін у вашому проєкті або теці vendor
.
Composer 2.* дає можливість використовувати опцію з composer require
і composer remove
що робить наше життя простішим
Запобігання проблем при роботі від root
При виконанні команд від користувача root
тепер потрібне підтвердження, щоб запобігти нашим помилкам.
У попередніх версіях, коли ви намагалися виконати команду, вона викликала наступне повідомлення:
Do not run Composer as root/super user! See https://getcomposer.org/root for details
З Composer 2.* ви повинні підтвердити виконання:
https://getcomposer.org/root for details Continue as root/super user [yes]?
Якщо інтерактивний режим не підтримується вашим терміналом, то повідомлення не покажеться. Ви можете обійти це повідомлення встановивши опцію --no-interaction
composer install --no-interaction
Канонічні репозиторії
Ця функція розв'язує певну проблему, з якою стикаються декілька розробників при використанні одного і того ж пакету в різних репозиторіях. Composer 1.0 слідував визначеним порядком при установці/оновленні своїх пакетів. Він почав шукати пакети у своєму списку репозиторіїв до тих пір, поки пакет не буде знайдений.
Іноді це було не зовсім очікуваною поведінкою при роботі з різними версіями пакетів в інших репозиторіях (які використовуються одним і тим же проєктом). Уявіть собі, що іноді ви хочете завантажити пакет зі свого приватного сховища, а не з packagist, в якому є пакет з тим же ім'ям.
За замовчуванням, в composer 2.x, всі репозиторії є канонічними. Composer 1.x розглядав всі репозиторії як неканонічні, і для того, щоб поміняти поведінку вручну, ви можете зробити:
{ "repositories": [ { "type": "composer", "url": "https://example.org", "canonical": false } ] }
Ви також можете відфільтрувати пакети, які репозиторій зможе завантажити, або вибравши ті, які ви хочете, або виключивши ті, які ви не хочете.
Наприклад, тут ми хочемо вибрати тільки пакет foo/bar
і всі пакети з some-vendor/
з певного composer сховища:
{ "repositories": [ { "type": "composer", "url": "https://example.org", "only": ["foo/bar", "some-vendor/*"] } ] }
А в цьому прикладі ми виключаємо toy/package
зі сховищ, який ми, можливо, не захочемо завантажувати в цей проєкт.
{ "repositories": [ { "type": "composer", "url": "https://example.org", "exclude": ["toy/package"] } ] }
І only
, і exclude
повинні бути масивами з іменами пакетів, які також можуть містити знаки (*), які відповідають будь-яким символам.
Ігнорувати певні вимоги платформи
Якщо з якоїсь причини ви хочете проігнорувати якесь певну вимогу платформи, ви можете просто запустити команду: composer install --ignore-platform-req php
Вона пропустить вимоги для PHP або конкретної версії. Якщо ви збираєтеся ігнорувати всі вимоги, вам слід використовувати команду, вже доступну в попередніх версіях --ignore-platform-reqs
Інші оновлення
Є безліч нових дрібних можливостей і виправлень помилок, які поліпшили зручність його використання та якість. Якщо вам цікаво дізнатися про них більше, ознайомтеся з описом до випуску в гітхаб.
Джерело: Composer 2.0 released
Ще немає коментарів