nonetallt / laravel-publish-routes
将路由作为JSON文件发布,该文件可以被route-repository JavaScript包使用。
Requires
- php: >=7.1
- laravel/framework: >=5.4
Requires (Dev)
- orchestra/testbench: ^6.22
- phpunit/phpunit: ^9.5
- spatie/phpunit-watcher: ^1.23
This package is auto-updated.
Last update: 2024-09-05 19:56:54 UTC
README
为route-repository JavaScript包提供的服务器端集成。
此包允许您生成包含Laravel应用程序路由的JSON文件。
安装
使用composer
composer require nonetallt/laravel-publish-routes --dev
基本用法
发布配置
php artisan vendor:publish --provider="Nonetallt\Laravel\Route\Publish\ServiceProvider"
当您的路由更新时运行此命令
php artisan route:publish
为了获得最佳的流程体验,建议您使用带有文件监视器的任务运行器,以在您的路由更新时自动运行此命令。
注意事项
请注意,解析正则表达式匹配URI模式可能会导致混乱 - 这种路由不应被发布。
配置
outputPath
- 类型:字符串
生成的路由文件的文件路径。应该有json扩展名。
outputJsonFlags
- 类型:整数掩码
json_encode的第二个参数。用于对输出结果进行编码。
skipNameless
- 类型:布尔值
是否应忽略未定义名称的路由。route-repository包依赖于路由名称,所以此选项所做的是,当您尝试发布没有名称的路由时,会抛出Nonetallt\Laravel\Route\Publish\Exception\NamelessRouteException
。这是为了方便起见:您可以将此选项设置为true,这样您就不会忘记命名路由,然后发布命令会静默地忽略它。
generateExtra
- 类型:可调用函数(
Illuminate\Routing\Route
) : 数组 |false
如果设置为false
,则不会为发布路由生成额外字段。如果设置为回调,该函数将Illuminate\Routing\Route
作为第一个参数,并应返回一个具有字符串键的数组。这允许您使用路由数据发布您认为重要的任何额外信息。
includeFilters
- 类型:数组[可调用函数(
Illuminate\Routing\Route
) : bool |Nonetallt\Laravel\Route\Publish\Contract\RouteFilter
]
可以包含以下内容的数组
- 可调用函数,接受
Illuminate\Routing\Route
作为第一个参数并返回布尔值。 - 实现
Nonetallt\Laravel\Route\Publish\Contract\RouteFilter
接口的实例。
这些过滤器定义了在发布路由时应包含哪些路由。不匹配这些过滤器的路由将不会发布。
excludeFilters
- 类型:数组[可调用函数(
Illuminate\Routing\Route
) : bool |Nonetallt\Laravel\Route\Publish\Contract\RouteFilter
]
可以包含以下内容的数组
- 可调用函数,接受
Illuminate\Routing\Route
作为第一个参数并返回布尔值。 - 实现
Nonetallt\Laravel\Route\Publish\Contract\RouteFilter
接口的实例。
这些过滤器定义了在发布路由时应排除哪些路由。匹配这些过滤器的路由将不会发布。覆盖includeFilters。如果您只想定义要排除的路由,则应使用includeFilters中的Nonetallt\Laravel\Route\Publish\Filter\EverythingFilter
,然后排除所需的路由。
可用过滤器
以下过滤器由包默认提供
- Nonetallt\Laravel\Route\Publish\Filter\CallableFilter
- Nonetallt\Laravel\Route\Publish\Filter\EverythingFilter
- Nonetallt\Laravel\Route\Publish\Filter\MiddlewareFilter
- Nonetallt\Laravel\Route\Publish\Filter\NameFilter
- Nonetallt\Laravel\Route\Publish\Filter\NothingFilter
- Nonetallt\Laravel\Route\Publish\Filter\PrefixFilter
您可以直接使用回调快速定义自己的自定义过滤器,因为回调将被转换为Nonetallt\Laravel\Route\Publish\Filter\CallableFilter
的实例。有关可用的方法,请参阅Route API。
如果您希望创建更复杂的过滤器,例如在多个项目中共享的过滤器,您应该实现Nonetallt\Laravel\Route\Publish\Contract\RouteFilter
接口。该接口只有一个必须实现的方法
public function shouldFilter(Illuminate\Routing\Route $route) : bool;