Локальная разработка пакетов с composer

Опубликовано: Комментариев: 0
Локальная разработка пакетов с composer

В этой статье мы рассмотрим как установить локальную библиотеку через менеджер зависимостей Composer. Предположим, это может быть полезно если вы работаете над библиотекой, которую в дальнейшем хотите опубликовать в сети и предоставить возможность ее установки для других разработчиков через composer/packagistНо при этом в ходе разработки и отладки пакета - конечно же хочется, чтобы пакет можно было развернуть на "реальном" приложении и проверить всю его логику еще раз перед публикацией.

Недостаток подхода состоит в том, что в приложении, куда мы будем подключать нашу библиотеку, в composer.json нужно выставить параметр "minimum-stability" на "dev". Что означает, что в проет притянутся другие зависимые либы в development версиях.

Итак, внутри composer.json файла Вашего приложения прописываем дефиницию для  тесриуемого локального пакета, добавляя repositories объект:

{
    "name": "laravel/laravel",
    "minimum-stability": "dev",

    ...

    "repositories": {
      "dev-package": {
        "type": "path",
        "url": "/Users/i/www/test-library",
        "options": {
          "symlink": true
        }
      }
    }
}

Аргумент "type": "path" позволяет Composer понять, что вы ссылаете на локальный репозиторий, а "url" определяет абсолютный или относительный путь к вашей библиотеке.

Этих двух параметров будет достаточно, но при таком подходе Composer будет копировать содержимое из локального пути к билиотеке внутрь проекта. А чтобы иметь возможность проверить следующие правки, нужно будет выполнять команду composer update.

Чтобы предотвратить такое поведение менеджера зависимостей - добавляем дополнительную опцию "symlink": true. Теперь вместо полного копирования в папку vendor, будет лишь создан симлинк на локальный путь к библиотеке.

Для установки локального пакета через Composer выполняем:

composer require vendor/dev-package @dev

После этого Ваша библиотека будет связана с приложением по средствам symlink и вы можете приступать к испытаниям. Удачи!