Я не понимаю, как работает create-project в композиторе. Давайте возьмем Laravel в качестве примера.
Я могу установить эту фреймворк PHP с помощью следующей команды:
composer create-project laravel/laravel --prefer-dist
Эта команда устанавливает фреймворк для меня, оставляя меня с несколькими папками в корне моей директории:
Плюс некоторые файлы.
Но когда я просто использую следующую команду композитора:
composer require laravel/laravel --prefer-dist composer install
Затем это устанавливает только папку vendor . Композиторы не загружают другие файлы и папки.
Как так? Что это такое? Как композитор знает, какие другие файлы получить, когда я использую команду create-project laravel/laravel и почему я получаю только папку vendor когда мне require laravel/laravel ?
require добавит зависимость от файла composer.json и загрузит его в каталог vendor как вы правильно заметили.
create-project с другой стороны, будет клонировать зависимость, то есть использовать зависимость в качестве шаблона для нового проекта. Взгляните на хранилище за laravel/laravel : https://github.com/laravel/laravel