mudandstars / sync-enum-types
这是我的包 sync-enum-types
v1.3
2023-08-28 15:33 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.10
- nunomaduro/collision: ^7.2
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- pestphp/pest-plugin-type-coverage: ^2.0
README
此包包含一个命令,用于为您 PHP 的 Enums 创建 TypeScript 声明文件。此命令可以设置为在保存时自动运行,例如。
安装
您可以通过 composer 安装此包
composer require mudandstars/sync-enum-types --dev
使用(VS Code)
- 根据您的项目结构检查已发布的配置是否需要更改
- 安装“保存时运行”扩展
- 将“保存时运行”命令添加到您的 settings.json(我喜欢使用工作区设置)
{ ...other settings "emeraldwalk.runonsave": { "commands": [ { "match": ".*/Enum/.*\\.php$", "cmd": "php artisan sync-enum-types" } ] } }
配置
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="sync-enum-types-config"
推荐的配置将 SYNC_CASES 设置为 true,以便将枚举情况作为类型数组提供,以便在前端使用。其最新版本如下所示
// config/sync-enum-types.php return [ 'PHP_ENUM_FOLDER_DESTINATION' => app_path('Enum'), 'TYPESCRIPT_ENUM_FOLDER_DESTINATION' => app_path('../resources/ts/types/Enum'), 'SYNC_CASES' => true, 'CASES_FOLDER_DESTINATION' => app_path('../resources/ts/EnumCases'), 'EXCEPTIONS' => [], ]
可能的枚举功能和标志
使用自定义方法的描述
为了避免在更改数据库中的枚举值时与现有数据冲突,一些工程师更喜欢使用简单的整数作为它们的值,并使用函数来描述这些值的含义,如下所示
enum MyEnum: int { case FIRST_CASE = 1; case SECOND_CASE = 2; public function description(): string { return match($this) { self::FIRST_CASE => 'first case description', self::SECOND_CASE => 'second case description', }; } public function someOtherFunction()... }
如果您想从枚举的方法而不是其情况的值同步描述,请在相应的函数上方放置 sync-using-method 标志,如下所示
enum MyEnum: int { case FIRST_CASE = 1; case SECOND_CASE = 2; // @sync-enum-types: sync-using-method public function description(): string { return match($this) { self::FIRST_CASE => 'first case description', self::SECOND_CASE => 'second case description', }; } public function someOtherFunction()... }
链接其他枚举
当使用多个枚举时,为了维护单一的真实来源,有时有必要定义如下所示的案例
case MY_CASE = MyOtherEnum::ITS_CASE->value;
这会自动正确处理并解析其他枚举的值,只要其源文件也位于同一目录。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG
贡献
有关详细信息,请参阅 CONTRIBUTING
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件