我正在构建一个在调用php artisan vendor:publish
时需要发布到这些目录的包。
目录包括
public_path('vendor/package/assets')
resources_path('vendor/package/views')
resources_path('vendor/package/translations')
当我运行试图写入这些目录的vendor:publsih
时,我收到与权限相关的错误。
但vendor:publish
适用于database_path('migrations')
。
Laravel需要storage
和bootstrap/cache
的许可775。
我不希望包用户被迫向公共和资源目录提供写入权限。
注意:我的软件包已经使用$ this-> loadViewsFrom,$ this-> loadTranslationsFrom和$ this-> loadMigrationsFrom作为默认选项。我希望为我的包用户提供修改视图,翻译,迁移等的完全访问权限。我的包还需要将一些资产发布到public
目录,例如js,css等,这对于某些视图来说非常必要。
我对artisan vendor:publish
缺少什么,以及如何让它发挥作用?
答案 0 :(得分:0)
在您的软件包的服务提供商boot
方法中,您应该依赖loadViewsFrom
和loadTranslationsFrom
方法来正确包含视图和翻译文件:
public function boot()
{
$this->loadViewsFrom(__DIR__.'/path/to/views', 'courier');
$this->loadTranslationsFrom(__DIR__.'/path/to/translations', 'courier');
}
如果您要发布文件而不是仅加载它们以供使用,请使用publishes
方法:
public function boot()
{
$this->publishes([
__DIR__.'/path/to/assets' => public_path('vendor/courier'),
]);
}