Как правильно установить пакет в Laravel?
Недавно я установил пакет a LaravelFacebookSdk
.
Установить
Я обновляю свой composer.json
, добавляя
"sammyk/laravel-facebook-sdk": "~3.0"
Затем я бегу composer update
Поставщик услуг
В моем /config/app.php
я добавляю LaravelFacebookSdkServiceProvider
в массив поставщиков.
'providers' => [
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
];
Все работает отлично. Затем я отправил его в свое хранилище.
Вот в чем проблема!
Второй разработчик, пришедший, сделал git pull
и запустил composer update
Он получит сообщение об ошибке
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
Не определено. потому что я объявил это в своем /config/app.php
в моем массиве поставщиков.
Он должен пойти прокомментировать эту строку и запустить composer update
первым. После того, как все успешно установлено, вернитесь и раскомментируйте эту строку снова.
Придется ли другому разработчику делать это каждый раз, когда мы устанавливаем новый пакет?
Я что-то здесь упускаю?
Пожалуйста, будьте добры посоветуйте, если я сделал что-то не так.
2 answers
Проблема здесь в том, что в вашем файле composer.json
настроена команда php artisan clear-compiled
для запуска перед процессом обновления. И поскольку artisan
является неотъемлемой частью приложения Laravel, оно будет жаловаться, когда в коде приложения что-то не так. Поскольку у вас есть ссылка на класс, которого еще нет, он выдаст это RuntimeException
. Вы можете исправить это, переместив эту команду из списка pre-update-cmd
в список post-update-cmd
в вашем composer.json
.
Так что измените это:
"scripts": {
...
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
К это:
"scripts": {
...
"pre-update-cmd": [
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
]
},
Теперь команда clear-compiled
будет запущена после процесса обновления, когда указанный класс LaravelFacebookSdkServiceProvider
присутствует, так что больше ошибок не будет.
Вместо запуска composer update
запустите composer install
. Нет необходимости изменять команды в вашем файле json.
Когда вы запустите composer update
, он пройдет через все ваши пакеты и обновится до последней второстепенной версии на основе вашего composer.json, а затем обновит composer.lock. Это не то, чего ты хочешь.
При запуске composer install
он убедится, что все в вашем файле json установлено, включая только что добавленные пакеты. Это то, что вы ищете.