【问题标题】:Publishing config and migrations from included package in Laravel从 Laravel 中包含的包发布配置和迁移
【发布时间】:2016-07-18 21:28:49
【问题描述】:

我正在使用 Laravel 构建一个包,其中将包含一些管理功能并包含一些其他包。

我已经包含了一个包含迁移和配置文件的包,但是如何将它们复制到 Laravel 中的正确文件夹。该包有它自己的 ServiceProvider,但我如何从我的包中调用它?

我正在使用以下内容在我的包中注册包。

class CldServiceProvider extends ServiceProvider {

    public function register()
    {
       $this->app->register(MediaLibraryServiceProvider::class);
    }
}

我试过了

php artisan vendor:publish 

但它说没有什么可发布的。因为它只查看这个 Laravel 安装的包,而不是嵌套的包。

【问题讨论】:

    标签: php laravel package


    【解决方案1】:

    发布供应商迁移:

    php artisan vendor:publish --tag=migration
    

    发布供应商配置:

    php artisan vendor:publish --tag=config
    

    【讨论】:

      【解决方案2】:

      就我而言,我发现我需要在我正在处理的应用程序中包含我的包。这一步没有包含在我遵循的原始教程中。

      所以在主应用程序中的composer.json

      "repositories": [
          {
              "type": "path",
              "url": "packages/namespace/name",
              "options": {
                  "symlink": true
              }
          }
      ],
      "require": {
          // ...
          "namespace/name": "dev-master"
      },
      

      然后我们从主文件夹运行这个命令:

      composer update

      之后运行php artisan vendor:publish 将包含发布子包的选项。

      注意:此信息的来源是:https://laraveldaily.com/how-to-create-a-laravel-5-package-in-10-easy-steps/

      【讨论】:

        【解决方案3】:

        解决方案

        我将 /packages/ 文件夹包含在我正在处理的当前项目中。 问题是在我的composer.json中包含包时

        现在可以从我的项目中的两个地方访问它,在供应商文件夹和我的包文件夹中。这导致了问题的

        我将我的包移到了当前项目之外,这解决了问题。

        【讨论】:

          【解决方案4】:

          正如@scrubmx 所提到的,您需要包含定义可以发布的内容的代码,尽管此代码不应该真正存在于您自己的服务提供商中,而应该包含在您包含的其他包中。如果它似乎没有此代码,最好将其列为该软件包存储库中的问题或创建拉取请求以添加它。

          【讨论】:

          • 感谢您的回答,其他包有自己的服务提供商,但我不知道如何称呼它..你知道怎么做吗?谢谢
          【解决方案5】:

          尝试单独发布配置并使用强制开关

          php artisan vendor:publish --tag=config --force
          

          【讨论】:

            【解决方案6】:

            我想你已经自己发布了配置文件

            $this->publishes([
                'other-package/absolute/path/some-config.php' => config_path('my-package.php'),
            ]);
            

            【讨论】:

            • 感谢您的回答,您必须为您包含的所有软件包执行此操作似乎很奇怪?但它可能是!
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-11-22
            • 2014-10-12
            • 1970-01-01
            • 2014-04-03
            • 2018-09-15
            • 2015-04-07
            • 1970-01-01
            相关资源
            最近更新 更多