Работа с пользовательскими директориями при установке Composer-пакетов
Как настроить нестандартные пути установки пакетов в Composer

Пользовательские пути для установки пакетов Composer



Настройка пользовательских путей через установщики

Некоторые фреймворки требуют, чтобы определённые пакеты устанавливались в конкретные каталоги за пределами стандартной директории vendor. Для этого в Composer можно использовать установщики (installers).

Например, многие CMS и фреймворки (Drupal, WordPress, Magento, Laravel) предоставляют свои установщики. Чтобы пакет устанавливался в нужную папку, укажите соответствующий тип в его composer.json:

{
    "type": "framework-module",
    "require": {
        "composer/installers": "^2.0"
    }
}

Указание путей в composer.json

Для настройки путей установки добавьте параметр installer-paths в секцию extra вашего composer.json. Например, чтобы установить пакеты типа framework-module в modules/{$name}/:

{
    "extra": {
        "installer-paths": {
            "modules/{$name}/": ["type:framework-module"]
        }
    }
}

Доступные переменные для путей:

  • {$name} — имя пакета,
  • {$vendor} — вендор пакета,
  • {$type} — тип пакета.

Пример для WordPress (установка плагинов в wp-content/plugins/):

{
    "extra": {
        "installer-paths": {
            "wp-content/plugins/{$name}/": ["type:wordpress-plugin"]
        }
    }
}

Особые случаи и проверки

  • Убедитесь, что устанавливаемый пакет имеет правильный тип (например, wordpress-plugin, drupal-module). Если тип не указан, Composer использует стандартную папку vendor.
  • Для кастомных сценариев можно использовать события Composer, например ScriptEvents::POST_INSTALL_CMD, чтобы переместить файлы после установки.
  • Если пакет не поддерживает нужный тип, потребуется изменить его composer.json (например, через форк).

Перевод с английского официальной документации Composer:
getcomposer.org

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню