Laravel 自动将包配置发布到项目
Laravel auto-publish the package configs to the project
我的包中有一些配置文件想要复制到项目或应用程序配置目录。我知道如何通过 运行 命令 php artisan vendor:publish
手动发布它。这里有人知道如何自动发布它们吗?就像我在生产环境中安装应用程序时不必记住我的包中有一些配置文件一样?
在项目的composer.json中找到了答案。只需要在脚本部分添加一个命令,在 post-autoload-dump
:
下
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi",
"@php artisan vendor:publish --tag={tagNameHere}--force"
]
},
我在我的包裹中定义了标签 ServiceProvider.php:
public function boot()
{
$this->publishes([
//file source => file destination below
__DIR__.'/config/someconfig.php' => config_path('someconfig.php'),
//you can also add more configs here
],
['tagNameHere'] //this is the tag so you can run the command as php artisan vendor:publish --force --tag=tagNameHere, for more info run php artisan vendor:publish --help
);
}
每次我 运行 composer update
或 composer dump-autoload
,我的依赖项的配置都会自动复制过来,所以我不必记住我有东西要发布。
我的包中有一些配置文件想要复制到项目或应用程序配置目录。我知道如何通过 运行 命令 php artisan vendor:publish
手动发布它。这里有人知道如何自动发布它们吗?就像我在生产环境中安装应用程序时不必记住我的包中有一些配置文件一样?
在项目的composer.json中找到了答案。只需要在脚本部分添加一个命令,在 post-autoload-dump
:
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi",
"@php artisan vendor:publish --tag={tagNameHere}--force"
]
},
我在我的包裹中定义了标签 ServiceProvider.php:
public function boot()
{
$this->publishes([
//file source => file destination below
__DIR__.'/config/someconfig.php' => config_path('someconfig.php'),
//you can also add more configs here
],
['tagNameHere'] //this is the tag so you can run the command as php artisan vendor:publish --force --tag=tagNameHere, for more info run php artisan vendor:publish --help
);
}
每次我 运行 composer update
或 composer dump-autoload
,我的依赖项的配置都会自动复制过来,所以我不必记住我有东西要发布。