воскресенье, 4 сентября 2016 г.

Создание расширения для Yii2

Основа расширения создаётся с помощью Gii.

1. Создание расширения в Gii.

Открываем "Extension Generator", заполняем форму.

Vendor Name: аккаунт на гитхабе, в моём случае "nex-otaku".

Package Name: например, "yii2-toolkit". Начинается с "yii2-".

Namespace: nex_otaku\toolkit\

Лицензию выбираем MIT, как самую простую и свободную.

2. Подключение локального репозитория.

Создаём репозиторий.
D:\repos\yii2-toolkit

Перемещаем туда сгенерированные файлы.

Подключаем в проекте локальный репозиторий:

"repositories": [
    {
        "type": "vcs",
        "url": "file://D:/repos/yii2-toolkit"
    }
]

По завершению тестирования, расширение нужно опубликовать на Гитхабе и зарегистрировать в Packagist. Тогда мы сможем подключать его через Composer.
Локальный репозиторий, соответственно, нужно будет удалить.

3. Подключение расширения.

Подключаем:

composer require nex-otaku/yii2-toolkit

4. Публикация в Github и Packagist.

Расширение протестировано и готово к публикации? Заливаем на Гитхаб и регистрируем его на Packagist.

Регистрация в Packagist:
Нажимаем кнопку "SUBMIT", вводим URL нашего репозитория на Гитхабе. Нажимаем "Check", потом "Submit". Наше расширение добавлено в каталог.

5. Настройка обновлений.

Включаем хук для автоматических обновлений на Гитхабе.

В репозитории Github:
"Settings" -> "Integrations & Services"
Добавляем сервис, выбираем из списка "Packagist".
Заполняем поля, имя пользователя Packagist (но не email), токен берём из профиля на сайте Packagist.
Поле "Domain" оставляем пустым.
Отправляем форму. Хук привязан.

Для проверки, нажимаем кнопку "Test service" (в правом верхнем углу в форме настроек хука).
После нажатия кнопки, со страницы пакета на Packagist должно пропасть предупреждение "This package is not auto-updated".

6. Использование.

Всё готово, можно править расширение и заливать изменения на Гитхаб. Пакет будет обновляться автоматически.

Версии пакета проставляются тегами в репозитории, и подгружаются из репозитория автоматически композером.

Можно версии вообще не указывать, если пакет подключен на "dev-master":
"nex-otaku/yii2-toolkit": "dev-master"
Пакет подключается так по умолчанию. При обновлении всегда будет загружаться последний коммит.

Если нам нужно обновить только наш пакет, а остальные не трогать, используем команду:
composer update nex-otaku/yii2-toolkit

6 комментариев:

  1. Подключаем в проекте локальный репозиторий:

    А где это надо подключать?
    Где прописывать эти строки?

    ОтветитьУдалить
    Ответы
    1. В файле "composer.json" в корне проекта.

      Удалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. Создание локального репозитария это ,как я пнял посто создание папки с расширением отдельно от проекта yii2?

    ОтветитьУдалить
  4. Размещение расширения в отдельной дирректории отдельно от проектнужнг, чтобы проще было сохранятььего в гитхаб?

    ОтветитьУдалить
    Ответы
    1. Конечно. На то оно и расширение, чтобы использоваться независимо от конкретного проекта. Если код зависит от проекта, то это просто модуль, часть приложения, его не требуется в расширение выносить.

      Удалить