Разница между требованием и установкой против создания проекта в композиторе

Я не понимаю, как работает 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