Створення і публікація PHP пакета Composer

Для розробки пакета зручним способом є розробка в головному кореневому проекті. Власне сам проект буде розміщуватися в директорії 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 версія – будуть встановлюватися останні доступні версії).

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *