intrfce / laravel-frontend-enums
停止在前端JavaScript中使用'魔法'字符串/数字,而使用您实际应用的枚举。
v0.7.1
2024-07-11 09:23 UTC
Requires
- php: ^8.2.0
- laravel/framework: ^v11.0.0
- laravel/prompts: ^v0.1.8
Requires (Dev)
- orchestra/testbench: ^9.1
- pestphp/pest: ^2.23
- phpunit/phpunit: ^10.0
- tightenco/duster: ^2.5
README
将您的PHP枚举发布到应用的前端,以便您可以在JavaScript代码中引用它们。
安装
您可以通过composer安装此包
composer require intrfce/laravel-frontend-enums
用法
在您的 AppServiceProvider.php
中,告诉包您想发布的枚举
use Intrfce\LaravelFrontendEnums\Facades\PublishEnums; PublishEnums::publish([ \App\Enums\MyEnum::class, \App\Enums\MyOtherEnum::class, ])->toDirectory(resource_path('js/Enums'));
然后运行发布命令
php artisan publish:enums-to-javascript
您的枚举将等待在您指定的路径,文件扩展名为 .enum.js
MyEnum.enum.js
MyOtherEnum.enum.js
然后您可以在JavaScript代码中导入并使用它们
import {MyEnum} from './Enums/MyEnum.enum.js'; import {MyOtherEnum} from './Enums/MyOtherEnum.enum.js'; console.log(MyEnum.FOO); // 0 console.log(MyOtherEnum.BAR); // 'bar'
TypeScript 支持
TypeScript支持已内置:只需在 AppServiceProvider.php
中的枚举列表中添加 ->asTypescript()
PublishEnums::publish([ \App\Enums\MyEnum::class, \App\Enums\MyOtherEnum::class, ]) ->asTypescript() ->toDirectory(resource_path('js/Enums'));
文件将以 .ts
文件和TypeScript原生枚举的形式输出
export enum MyEnum { FOO = 0, BAR = 1, BAZ = 2, }
在更改时自动生成javascript文件。
您可以使用来自 lepikhinb 的 vite-plugin-watch
包来自动生成当您更改PHP枚举时的javascript文件
npm install -D vite-plugin-watch
然后将插件添加到您的 vite.config.js
import { defineConfig } from "vite" import { watch } from "vite-plugin-watch" export default defineConfig({ plugins: [ watch({ pattern: "app/Enums/**/*.php", command: "php artisan publish:enums-to-javascript", }), ], })
变更日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 以获取详细信息。
安全
如果您发现任何安全问题,请通过电子邮件dan@danmatthews.me联系,而不是使用问题跟踪器。
致谢
许可
MIT许可证(MIT)。有关更多信息,请参阅许可文件。