php artisan vendor:publish的作用?

php artisan vendor:publish

可以把对应的服务提供者的资源文件,复制到指定的路径下。

度娘是这么解释的 但是还不是很懂这个意思

比如php artisan vendor:publish –provider=”Nwidart\Modules\LaravelModulesServiceProvider”

不是在composer的时候就把资源文件撸下来了吗 再发布干嘛

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6

composer 只是下载了vendor里面的文件, config里面的文件还没有呢

3年前 评论

推送的是静态文件。 就是图片 css js 这些需要推送到public目录让浏览器访问

3年前 评论
deatil (作者) 3年前
Summer

发布到项目里,方便定制。

以你的例子:

php artisan vendor:publish –provider=”Nwidart\Modules\LaravelModulesServiceProvider

查看其 源码

    protected function registerNamespaces()
    {
        $configPath = __DIR__ . '/../config/config.php';

        $this->publishes([
            $configPath => config_path('modules.php'),
        ], 'config');
    }

是将 github.com/nWidart/laravel-modules... 发布到项目中的 config/modules.php 文件中。发布完成后,你就可以修改 config/modules.php 里的配置信息来定制 laravel-modules 包的行为。

需要知道的是,composer 下载的代码存放于 vendor 目录下,vendor 下的代码会在每一次安装应用时,重新下载,故此目录的代码不能修改。

3年前 评论
ta_ta (楼主) 3年前

一般的扩展包都会兼容扩展包内的配置和一些静态文件(view,js、css 等),但是为了可以让开发者自定义配置或者是静态文件,而不是直接修改 vendor 目录下的扩展包源代码,所以将这些资源复制到项目的工作区内。

file

注意这里的 mergeConfigFrom ,就是如果项目的 config/inquiry.php 存在的话,将会覆盖 vendor/provider/package/config/inquiry.php 的配置。

如果扩展包的版本发布,对静态文件或配置做了修改,当更新完扩展包后,需要再次执行发布,并强制覆盖。

当然,发布前建议备份原有文件,比如视图模板文件。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!