Satis створіть свій власний репозиторій composer
phpcomposersatisrepository
Всі ми любимо Composer. Він істотно змінив спосіб побудови PHP додатків, заснованих на невеликих і повторно використовуваних компонентах, але це створює нові проблеми, особливо, коли у нас є єдина точка відмови. За допомогою Satis. ми можемо зробити процес викладки більш стійким, додавши резервування для всіх потенційних точок відмови (Packagist і GitHub). Давайте подивимося, як це працює.
Як працює Composer?
Наведені нижче діаграма показує, як працює Composer при використанні Packagist як центрального сховища:

Якщо ми вказуємо, що хочемо використовувати різні репозиторії, то Composer використовує сховище за замовчуванням: Packagist. Composer запросить у Packagist інформацію про всіх пакетах, необхідних у файлі composer.json. а також залежностей, необхідних для цих пакетів.
Коли Composer отримує всю інформацію, він дозволяє граф залежностей, використовуючи SAT solver і генерує файл composer.lock з конкретними пакетами, які повинні бути встановлені для того, щоб виконати вимоги, запитувані в файлі composer.json. Нарешті, Composer завантажує ці пакети з різних джерел: GitHub, Bitbucket, PEAR або будь-якого GIT / SVN / Mercurial сховища.
Дана архітектура має кілька проблем: що станеться, якщо Packagist впаде? Це не буде працювати. Composer не зможе дозволити граф залежностей. На додаток до цієї проблеми, що станеться, якщо необхідні пакети розміщуються в GitHub'е, і він в даний час не працює? Це не буде працювати. Пакети не будуть завантажені, що вплине на вашу розробку і викладку.
Як ми можемо мінімізувати всі ці проблеми? Додаванням резервування. Ми можемо створити наш власний репозиторій за допомогою Satis. використовуючи це сховище замість (або на додаток до) Packagist. Наступна діаграма показує ту ж схему, але з використанням спеціального сховища:

Тепер, Composer запитує інформацію про необхідні пакетах в нашому індивідуальному сховище і буде звертатися до Packagist тільки тому випадку, якщо наш репозиторій не має цієї інформації. Ми навіть можемо відключити Packagist і налаштувати наш репозиторій, щоб все залежності пакетів завантажувалися в нього. Крім того, наше сховище може завантажити пакети і діяти в якості reverse proxy сервера. Таким чином, ми більше не залежимо від GitHub'а для завантаження пакетів.
Ми можемо встановити Satis за допомогою Composer:
Файл конфігурації сховища
Давайте уявимо, що ми є компанією з декількома розробниками і для наших проектів потрібно тільки дві залежності: Symfony HttpFoundation component і Twig. Ми хочемо, щоб у нас був індивідуальний репозиторій з усіма версіями (за винятком версій розробки) цих двох пакетів і ми не повинні покладатися на GitHub:
Формат файлу досить простий, але давайте подивимося, що кожне з полів означає:
- "Name". ім'я сховища.
- "Homepage". URL сховища.
- "Repositories". містить список репозиторіїв, які ми хочемо відобразити.
- "Require-all". скачати все пакети, а не тільки ті, що з тегом.
- "Require-dependencies". якщо значення "true", Satis автоматично дозволяє і додає все залежності, тому Composer'у не потрібно буде використовувати Packagist.
- "Archive". "Tar" файли будуть зберігатися в "dist" каталозі та нам не потрібно буде завантажувати "dev" пакети.
Потім, ми говоримо Satis створити сховище:
І, нарешті, ми публікуємо наш репозиторій за допомогою PHP-шного вбудованого сервера (для реальних сховищ рекомендується використовувати Apache або Nginx):

Використання сховищ в Composer
Після того як репозиторій заробив, останнім кроком потрібно буде повідомити Composer'у, що ми хочемо використовувати його. Це може бути зроблено шляхом додавання наступних рядків у файл composer.json вашого проекту.
Після цього, під час запуску composer install буде використовуватися наше сховище:
Крім того, ми можемо побачити запити, які робив Composer, щоб отримати спочатку репозиторій (packages.json. Включаючи /include/all$e0f2af5bfe26328fcc97241cbd95de682f4fbfaa.json), а потім сам пакет: