@JohnxFFF

Что такое extra в Composer json?

Добрый день, обнаружил строку:
"extra": {
        "bootstrap": "vendor\\mypackage\\Bootstrap"
    },


Что это и зачем?
Какого-то внятного объяснения не нашел.
Bootstrap - обычный класс, реализующий интерфейс:
interface BootstrapInterface{
    public function bootstrap($arg);
}
  • Вопрос задан
  • 1692 просмотра
Решения вопроса 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
https://getcomposer.org/doc/04-schema.md#extra


Arbitrary extra data for consumption by scripts.
This can be virtually anything.
Optional.


Простым языком - это секция, в которой можно устанавливать свои кастомные параметры, которые будут использоваться вашими скриптами или надстройками для Composer. Например, есть плагин composer/installers, позволяющий устанавливать пакеты не в vendor, а по нужным путям для разных платформ/CMS. Он использует секцию extra для конфигурации этих путей. Например, для WordPress у меня это выглядит вот так:

{
  "extra": {
    "wordpress-install-dir": "core",
    "installer-paths": {
      "app/{$name}": ["type:wordpress-dropin"],
      "app/mu-plugins/{$name}": ["type:wordpress-muplugin"],
      "app/plugins/{$name}/": ["type:wordpress-plugin"],
      "app/themes/{$name}/": ["type:wordpress-theme"]
    }
  }
}
Ответ написан
Maksclub
@Maksclub
maksfedorov.ru
Это дополнительные данные для команд (хуков) в секции scripts, в данном случае некий класс

Чтобы понять эту тему — изучить нужно этот раздел: Composer Scripts
Там будет про Event Handler и сами Events, через который и получают в своих обработчиках эти данные из extra через метод:
$extra = $event->getComposer()->getPackage()->getExtra();

В данном случае передается класс, может быть скаляр или json-объект, да что угодно в рамках синтаксиса и языка
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@green_goo
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы