Как на самом деле работает рабочий процесс Composer?

Кстати, мне не хватает сна, и, кажется, мой разум сейчас заблокирован, из-за чего это может показаться вам бессмысленной тирадой, поэтому, пожалуйста, постарайтесь отнестись к ним терпеливо, если они не выглядят так.

Я работаю над OS X Snow Leopard. Не буду врать, как мне нравится иметь доступ к двоичным файлам, которые PEAR устанавливает для меня. Я просто brew unlink php53 и brew link php53 после установки пакетов PEAR, поэтому я получаю их двоичные файлы в /usr/local/bin.

Возьмем, к примеру, Бехата. Если я устанавливаю его через PEAR (теперь устаревший), я делаю процедуру выше, и у меня сразу же есть доступ к нему через behat, и только это. Если бы я сделал символическую ссылку на всю папку bin, сгенерированную Composer, я бы получил три «команды» помимо behat: behat.bat и release.

Я делаю что-то неправильно? Нет ли способа централизовать нужные бинарники, например, на /usr/local/bin, желательно без добавления нового пути к $PATH? Есть ли способ сделать это через Composer?

Я имею в виду npm, где вы можете установить глобальные и локальные версии модулей. Хотелось бы удобные глобальные версии (правильных) бинарников. Вид драгоценных камней, без ненужного дублирования.

Понимаете? Много противоречивой информации, но сейчас у меня именно так. Я полагаю, что ищу что-то вроде этот другой вопрос, только что примененный к двоичные файлы «поставщика».

Заранее спасибо!

PS: Если я действительно говорю как несчастный человек, дайте мне знать, и я перефразирую свое сообщение в первый час после хорошего сна. Спасибо!


person Andrés Botero    schedule 18.07.2012    source источник


Ответы (1)


Дело в том, что если вы устанавливаете что-то глобально, что происходит, когда одному проекту нужен Behat 1.5, а другому Behat 2.0 (воображаемые версии), которые несовместимы? Установка этих инструментов в самом проекте с помощью require-dev — хороший способ решить эту проблему. Затем вы просто вызываете bin/behat в своем проекте и все (при условии, что вы поместили bin-dir: bin в конфигурацию вашего композитора, иначе это поставщик/bin/behat).

Что касается behat.bat и release, этого не произойдет. Эти файлы присутствуют в самом behat, но они не будут связаны в каталоге bin композитора.

Наконец, если вы действительно хотите, чтобы он был глобальным, вы можете использовать ~/phputils/composer.json или что-то еще:

{
     "require": {
         "behat/behat": "*"
     },
     "config": {
         "bin-dir": "/usr/local/bin"
     }
}

Я не уверен, что абсолютный bin-dir работает в данный момент, и я особенно не уверен, что это хорошая идея, но это вариант. Предпочтительно, я бы сказал, что вы должны просто указать его как "bin" и добавить ~/phputils/bin к вашему PATH. Затем вы можете перейти в этот каталог, запустить установку/обновление композитора и все.

Существует также хитрость в том, чтобы сделать скрипт оболочки composer-g в вашем /usr/local/bin, который делает cd ~/phputils/ && composer $*, чтобы вы могли вызывать composer-g update behat/behat из любого места.

person Seldaek    schedule 18.07.2012
comment
RubyGems будет обрабатывать эти две версии по всему миру. Я бы выбрал их для каждого проекта. Bundle позаботится о том, чтобы внутри каждого проекта были правильные двоичные файлы в качестве гарантии, но я все еще мог использовать глобальные. Я упомянул два дополнительных файла в bin, потому что я установил behat через Packagist, и они попали в эту папку. Я думаю, что сейчас я хочу «использовать» пакеты для каждого проекта, но используя единую глобальную установку. Я думал о вашем решении, я просто не хотел делать это сам. Я собираюсь поддерживать Composer, чтобы он рос с большим количеством функций. Спасибо - person Andrés Botero; 18.07.2012
comment
То, что вы описываете, интересно, и мы могли бы сделать это в какой-то момент. Есть команда link, которая более или менее запланирована (github.com/composer/composer/issues/ 601), что должно помочь и в этом случае. В любом случае не стесняйтесь проверять открытые вопросы и комментировать здесь и там. Мы всегда можем использовать информацию от людей, широко использовавших другие инструменты. - person Seldaek; 18.07.2012
comment
Я не заметил/не проверил, что ты один из основных разработчиков Composer, ха-ха. В любом случае, спасибо за вашу поддержку! - person Andrés Botero; 18.07.2012