Мой проект основан на ZF и на JS-библиотеке. Я хотел иметь возможность развернуть библиотеку ZF в обычное место (vendor / zendframework / zendframework1), но затем развернуть мою JS-библиотеку в другом месте (public / my-vendor / my-library). Есть какой-либо способ сделать это?
Composer предназначен для управления вашими зависимостями PHP, а не JS.
Кроме того, он поддерживает только одну папку поставщика.
Вы можете следить за использованием пакетов Symfony:
По-моему, это безопаснее, чем устанавливать что-то в общей папке (пока вы копируете / связываете только публичную часть библиотеки).
Я столкнулся с идеей symlink, но я хотел автоматизировать это, а не вручную создавать символические ссылки. Я собирался создать скрипт для создания символической ссылки. Затем я обнаружил, что символические ссылки на Windows и * nix необходимо создавать разными способами, что сделало это решение более беспорядочным с помощью второго. Я обнаружил, что в документах композитора они рассказывают об этой же проблеме на странице пользовательских установщиков и говорят, что для этого необходимо создать собственный пользовательский установщик.
Я внедрил этот плагин для компоновщика для установки пакетов в пользовательские (пользовательские) определенные папки, которые вы можете просто включить в свой composer.json, следуйте примеру и скажите мне, есть ли у вас больше вопросов 🙂
https://github.com/mnsami/composer-custom-directory-installer
Плагин композитора для установки различных типов композиционных пакетов в пользовательских каталогах за пределами стандартного пути установки по умолчанию композитора, который находится в папке vendor
.
Это не другая библиотека компоновщика composer-installer
для поддержки типов пакетов, отличных от композитора, т.е. application
.. и т. Д. Это только для того, чтобы добавить гибкость установки композиционных пакетов за пределы папки поставщика. Этот пакет поддерживает только типы пакетов composer
,
https://getcomposer.org/doc/04-schema.md#type
Тип пакета. По умолчанию используется библиотека.
Типы пакетов используются для пользовательской логики установки. Если у вас есть пакет, который нуждается в специальной логике, вы можете определить нестандартный тип. Это может быть набор symfony, плагин wordpress или typo3-модуль. Эти типы будут специфичны для определенных проектов, и им необходимо будет предоставить установщик, способный устанавливать пакеты такого типа.
composer.json
require
section :: "require":{ "php": ">=5.3", "mnsami/composer-custom-directory-installer": "1.1.*", "monolog/monolog": "*" }
extra
разделе укажите настраиваемый каталог, который вы хотите установить, в :: "extra":{ "installer-paths":{ "./monolog/": ["monolog/monolog"] }
добавив часть установочных installer-paths
, вы сообщаете композитору установить пакет monolog
внутри папки monolog
в корневом каталоге.
composer/installers
, другими словами, вы можете использовать переменные, такие как {$vendor}
и {$name}
в вашем разделе installer-path
: "extra": { "installer-paths": { "./customlibs/{$vendor}/db/{$name}": ["doctrine/orm"] } }
вышесказанное сможет установить пакет doctrine/orm
в корневой папке вашего проекта под customlibs
.
type: project
композитора type: project
не поддерживается в этом установщике, поскольку пакеты с project
типа имеют смысл использовать только с оболочками приложений, такими как symfony/framework-standard-edition
, которые потребуются другому пакету.