Как правильно установить пакет в Laravel?

Недавно я установил пакет 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. После того, как все будет успешно установлено, вернитесь назад и раскомментируйте эту строку назад.

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

Я что-то упустил?

Пожалуйста, сообщите, если я сделал что-то неправильно.

Ответ 1

Проблема заключается в том, что команда php artisan clear-compiled настроена для запуска до процесса обновления в вашем файле composer.json. И поскольку 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, поэтому больше нет ошибок.

Ответ 2

Вместо запуска composer update выполните composer install. Нет необходимости изменять команды в вашем json файле.

Когда вы запустите composer update, он переберет все ваши пакеты и обновит последнюю свежую версию на основе вашего composer.json, а затем обновит композитор. Это не то, что вы хотите.

Когда вы запустите composer install, вы убедитесь, что все в вашем json файле установлено, включая только что добавленные вами пакеты. Это то, что вы ищете.