
Для розробки пакета зручним способом є розробка в головному кореневому проекті. Власне сам проект буде розміщуватися в директорії vendor-dev/mkuzmych/zabbix відносно кореня проекту. Здійснимо його налаштування.
Конфігурація пакету
Згенеруємо файл composer.json в директорії пакету та додамо до нього автозавантаження класу (Zabbix) нашого пакету:
$ composer init
{
"name": "mkuzmych/zabbix",
"description": "This package provides a Zabbix API library for PHP",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Mykola Kuzmych",
"email": "ua.pixart@gmail.com"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=7.0"
},
"autoload": {
"psr-4": {
"Zabbix\\": "src/Zabbix"
}
}
}
Оновимо інформацію для автозавантаження:
$ composer dump-autoload
Створимо файл нашого коду
$ nano src/Zabbix/Zabbix.php
<?php
namespace Zabbix;
class Zabbix {
public function api() {
return 123;
}
}

Конфігурація кореневого проекту
Підключимо як репозиторій директорію з пакетом
$ nano composer.json
{
"repositories": [
{
"type": "path",
"url": "vendor-dev/mkuzmych/zabbix"
}
],
"minimum-stability": "dev"
}
Проінсталюємо власне сам пакет в проект:
$ composer require "mkuzmych/zabbix @dev"
Використаємо пакет в проекті:
$ nano public/index.php
<?php
require __DIR__ . '/../vendor/autoload.php';
$zabbix = new \Zabbix\Zabbix();
var_dump($zabbix->api());
?>
Таким чином доступна можливість легко міняти основний проект пакету і відразу перевіряти зміни, а в директорії з проектом розміщуються виключно необхідні файли.

Публікація проекту на GitLab
Всі дії відбуваються в директорії пакету vendor-dev/mkuzmych/zabbix
$ git init
Initialized empty Git repository in .git/
$ git remote add origin https://gitlab.com/mkuzmych/zabbix.git
Додамо файли і директорії для ігнорування git
$ nano .gitignore
composer.lock
vendor/
Оублікуємо зміну на сервер
$ git add .
$ git commit -m "Initial commit"
$ git push -u origin master
Публікація проекту на Packagist
Для завантаження пакету в Packagist в меню Submit введіть Repository URL https://gitlab.com/mkuzmych/zabbix.git.
Проект буде додано до ваших пакетів, але він не буде автоматично оновлюватися без відповідних налаштувань в Gitlab (Not Auto-Updated, Needs Attention).
Для ввімкнення інтеграції Gitlab з Packagist в налаштуваннях репозиторію GitLab ввімкніть її в Settings->Integrations. Ввімкніть інтеграцію з Packagist, додайте ім’я користувача та токен, адресу залишіть пустою – після успішного налаштування пакет буде автоматично оновлюватися на Packagist.
Інсталяція пакету в іншому проекті
Після першого коміту в репозиторій в свій проект ви можете проінсталювати пакет командою:
$ composer require "mkuzmych/zabbix @dev"
Для можливості інсталяції пакету короткою командою і контролю доставки необхідно скористатися Релізами (Release) – знімок вашого проекту на певний момент часу.
Рекомендовано використовувати наступний стандарт вказання версії:
(Major).(Minor).(Patch)
- В GitLab зайдіть в меню Repository > Tags > New Tag
- Tag name: v1.0.0
Create from: master
Message: Release 1.0.0
Release notes: Initial release for …
До випуску нового релізу, команда composer update не буде оновлювати пакет згідно ваших вимог до версій (тільки якщо вказана dev версія – будуть встановлюватися останні доступні версії).