Я заметил (для меня) странный шаблон, который Laravel Spark использует для установки себя, и я не могу понять, почему это следует делать или считается хорошей практикой.
Поведение
Учитывая, что мы создаем приложение Spark в каталоге /var/acme-spark
.
Во-первых, установщик Spark настраивает приложение Laravel. После этого он загружает/устанавливает все файлы Spark (исходный код PHP, ресурсы внешнего интерфейса, такие как файлы LESS и JS, шаблоны блейдов и так далее) в каталог с именем spark
в корне проекта, то есть в /var/acme-spark/spark
. Затем он обновляет composer.json
, чтобы он содержал следующее:
{
// ...
require: {
// ...
"laravel/spark": "*@dev"
}
// ...
"repositories": [
{
"type": "path",
"url": "./spark"
}
]
}
Что в основном означает: «Возьмите каталог spark
и относитесь к нему как к репозиторию поставщиков. Затем создайте символическую ссылку для каталога spark
в поставщиках».
Символическая ссылка действительно выглядит следующим образом:
user@machine:~$ cd /var/acme-spark/vendor/laravel
user@machine:/var/acme-spark/vendor/laravel$ ls -l
cashier
framework
homestead
spark -> ../../spark
Загадочная часть
Теперь это озадачивает, так как это дает вам полный контроль над всем, что является ядром Spark, так зачем вообще использовать композитор? С другой стороны, это делает обновление проблемой, поскольку вы могли что-то изменить и ожидать, что они не будут перезаписаны во время обновления. Так почему бы тогда не использовать простой пакет composer с приватным репозиторием?
Почему это сделано именно так? Это хорошая практика или нет? Каковы причины того, что это является или не является хорошей практикой?