当前位置:  开发笔记 > 编程语言 > 正文

如何在Laravel中正确安装包?

如何解决《如何在Laravel中正确安装包?》经验,为你挑选了2个好方法。

最近,我安装了一个包LaravelFacebookSdk.


安装

composer.json通过添加更新我的

"sammyk/laravel-facebook-sdk": "~3.0"

然后,我跑了 composer update


服务提供者

在我/config/app.php,我添加LaravelFacebookSdkServiceProvider到providers数组.

'providers' => [
    SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
    ];

一切都很好.然后,我将它推送到我的存储库.


问题来了!

第二个开发人员进来git pull并运行composer update

他会得到一个错误

 SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,

是不确定的.因为,我/config/app.php在我的提供者数组下声明了.

他必须去评论那条线,并运行composer update第一条线.成功安装所有内容后,再次返回并取消注释该行.

其他开发人员每次都要这样做,我们安装了新包吗?

我在这里错过了什么吗?

如果我做错了,请告知.



1> Bogdan..:

这里的问题是有一个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> jfadich..:

而不是运行composer update运行composer install.无需更改json文件中的命令.

当您运行composer update它时,将遍历所有包并根据您的composer.json更新到最新的次要版本,然后更新composer.lock.这不是你想要的.

当您运行composer install它时,将确保安装了json文件中的所有内容,包括刚添加的包.这就是你要找的东西.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有