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

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

Я что-то здесь упускаю?

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

Author: kyo, 2016-01-11

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 присутствует, так что больше ошибок не будет.

 10
Author: Bogdan, 2016-01-11 22:50:36

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

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

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

 5
Author: jfadich, 2016-01-12 00:11:38