Установленные модули Composer ОС независимы? - PullRequest
0 голосов
/ 31 августа 2018

Я знаю, что приведенный ниже сценарий далек от современных лучших практик, но давайте попробуем.

Предположим, что:

  1. у вас есть среда разработки и сервер с той же версией PHP, но с разными ОС.
  2. вы хотите / должны развернуть папку вашего поставщика на сервере как есть.

Насколько вероятно, что: некоторые пакеты не будут работать из-за переключения ОС И их можно было бы избежать, если бы они были установлены из файла компоновщика json на сервере (т.е. они не полностью зависят от платформы)?

Из этого вопроса я знаю, что абсолютные пути, заданные во время установки, могут быть проблемой. Есть ли другие возможные проблемы?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Они должны быть независимы от ОС, пока вы вносите composer.lock в свой проект. Смысл composer.lock заключается в установке тех же пакетов с помощью composer install независимо от ОС, а сам Composer не использует абсолютные пути (по умолчанию). Фактически, сопровождающие Composer не рекомендуют использовать его в рабочей среде , и многие причины были закрыты, поскольку в качестве причины Composer не является инструментом развертывания. Таким образом, вы должны иметь возможность перемещать установки между средами, и в каждой системе вы получите одинаковые пакеты, установленные composer install.

Единственными проблемами могут быть скрипты и / или плагины , которые могут делать некоторые вещи, которые не переносимы, и вам нужно запустить их при целевой установке.


Короче говоря: Да, установки не зависят от ОС (если вы не сделаете что-то, это изменится).

0 голосов
/ 31 августа 2018

Вероятность довольно высока, потому что композитор будет работать по-разному в зависимости от настроек среды.

Простой пример этого будет https://getcomposer.org/doc/articles/scripts.md

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

Основная проблема заключается в том, что вы хотите повторно использовать папку поставщика. Composer не работает таким образом, поэтому vendor часто упоминается в файле .gitignore. composer будет вести себя по-разному в зависимости от среды, и его результат не должен копироваться. Если вы хотите привести поведение в соответствие между ОС, используйте Docker или vagrant для стабилизации приложения и его среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...