防止包包含嵌入式 composer.json 的提供者定义

Prevent a package from including the provider definition of the embedded composer.json

我有一个用例,我想通过使用我自己的服务提供商以及扩展提供的命令来扩展某个包。

包有一个composer.json定义如下:

"extra": {
    "laravel": {
      "providers": ["BeyondCode\LaravelWebSockets\WebSocketsServiceProvider"],
      "aliases": {
        "WebSocketRouter": "BeyondCode\LaravelWebSockets\Facades\WebSocketRouter"
      }
    }
  }

我希望 laravel 在不修改包的情况下忽略提供者定义。

有谁知道这是否真的可行?

这可以通过 opting out of package discovery 来完成。

作为包的消费者,您可以将以下内容添加到您的 composer.json 文件中,以选择性地退出包发现。

"extra": {
    "laravel": {
        "dont-discover": [
            "beyondcode/laravel-websockets"
        ]
    }
},

这样,包的服务提供商将可用于扩展您自己的服务提供商,但不会自动加载。