![](/img/trans.png)
[英]Laravel: Permanently override config of dependencies from a Laravel Package before publishing them
[英]Publishing config and migrations from included package in Laravel
我正在使用 Laravel 構建一個 package,它將包含一些管理功能,並將包含一些其他包。
我已經包含了一個 package,它有遷移和一個配置文件,但是我如何將它們復制到 Laravel 中的正確文件夾中。package 有它自己的 ServiceProvider,但是我如何從我的 package 中調用它?
我正在使用以下內容在我的 package 中注冊 package。
class CldServiceProvider extends ServiceProvider {
public function register()
{
$this->app->register(MediaLibraryServiceProvider::class);
}
}
我試過了
php artisan vendor:publish
但它說沒有什么可發布的。 因為它只查看這個 Laravel 安裝的包,而不是嵌套的包。
嘗試單獨發布配置並使用強制開關
php artisan vendor:publish --tag=config --force
正如@scrubmx所提到的,您需要包括定義可以發布內容的代碼,盡管該代碼不應真正包含在您自己的服務提供程序中,而應包含在您所包含的其他程序包中。 如果它似乎沒有此代碼,則最好將其列為該軟件包存儲庫中的問題,或創建一個添加它的拉取請求。
在 package 根文件夾中創建database/migrations
文件夾。 然后在您的服務提供商的啟動方法中添加發布詳細信息。
final class MyPackageServiceProvider extends BaseServiceProvider
{
public function boot(): void
{
$this->publishes([
__DIR__ . '/../database/migrations/' => database_path('migrations/my-package'),
], 'my-package-migrations');
}
}
第二部分可能類似於database_path('migrations')
或database_path('migrations/my-package')
。 我建議使用子文件夾,因為如果有很多包, migrations
文件夾會增長太多。
'my-package-migrations'
部分是我們的標簽。 並運行帶有標簽的發布命令。
php artisan vendor:publish --tag=my-package-migrations
如果您使用子文件夾php artisan migrate
命令將不起作用,因為我們需要像這樣指定到確切的遷移文件夾,
php artisan migrate --path=/database/migrations/my-package
是的,這看起來有點臟,但可以整理電纜。 並且不要忘記使用composer dump-autoload
。 如果服務提供商已注冊,則此解決方案有效。 此外,您可以將此方法用於配置,但配置文件夾不支持子文件夾。
我認為您已經自己發布了配置文件
$this->publishes([
'other-package/absolute/path/some-config.php' => config_path('my-package.php'),
]);
我在正在處理的當前項目中包含了/ packages /文件夾。 問題是當在我的composer.json中包含該軟件包時
現在可以從我的項目中的2個位置(供應商文件夾和package文件夾中)訪問它。 這是造成問題的
我將軟件包移到當前項目之外,這解決了該問題。
就我而言,我發現我需要在正在處理的應用程序中包括我的軟件包。 我遵循的原始教程未包含此步驟。
因此,在主應用程序的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/
發布供應商遷移:
php artisan vendor:publish --tag=migration
發布供應商配置:
php artisan vendor:publish --tag=config
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.