Download the PHP package olivermbs/enumshare without Composer
On this page you can find all versions of the php package olivermbs/enumshare. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download olivermbs/enumshare
More information about olivermbs/enumshare
Files in olivermbs/enumshare
Package enumshare
Short Description A Laravel package to export PHP Enums to TypeScript with labels, metadata, and type-safe frontend access
License MIT
Homepage https://github.com/olivermbs/enumshare
Informations about the package enumshare
Enumshare
A Laravel package to export PHP Enums to TypeScript. Simple, type-safe, zero runtime dependencies.
Installation
Quick Start
1. Create your enum
Any PHP enum can be exported - no trait required.
2. Export
3. Use in TypeScript
Generated Output
↓ Generates ↓
Output Modes
Configure the output mode in config/enumshare.php:
Full (default)
Includes labels, meta, lookup maps, type guards, and utility methods.
Minimal
Simple output - just values and types (~10 lines per enum):
Configuration
Commands
php artisan about shows an Enumshare section with the active configuration.
CI: Fail on Drift
--check verifies the generated files without writing anything and exits non-zero when
any file is stale or missing — so enum drift becomes a failing build instead of a runtime
surprise:
It also lists orphaned files (generated for enums that no longer exist); clean those up
locally with enums:export --prune, which only ever deletes files carrying the
auto-generated marker.
Attributes
| Attribute | Description |
|---|---|
#[Label('Text')] |
Static label |
#[TranslatedLabel('key')] |
Translation key |
#[Meta(['key' => 'value'])] |
Metadata |
#[ExportMethod] |
Export method result |
#[DontExport] |
Exclude enum from export |
Label resolution order: #[TranslatedLabel], then #[Label], then the enums.{Enum}.{CASE} translation key, then a public label(): string method on the enum, then the case name.
Note: Enums are keyed by short name (class basename). Duplicate names across namespaces will cause a collision error.
Computed properties with #[ExportMethod]
Mark any parameterless public method with #[ExportMethod] and its per-case result is
exported as a typed property on every entry:
↓ Use it in TypeScript ↓
Keeping enums backend-only
Auto-discovery exports every enum in the configured paths. Mark internal enums with
#[DontExport] and they are excluded everywhere — the attribute wins even when the enum
is listed explicitly in the config (you get a warning about the conflict).
Multilingual Labels
Add locales to the config and #[TranslatedLabel] labels are exported for every locale:
Each label becomes an object keyed by locale ({ en: 'Active', de: 'Aktiv' }), and the
generated file includes a resolver — Status.labels('de') returns the German labels,
while each entry keeps the full label object for custom handling.
Auto-Regeneration with Vite
For automatic regeneration during development, install Laravel Wayfinder:
Then configure Vite to watch your enum files:
Note: Wayfinder is optional - only needed for auto-regeneration. You can always run
php artisan enums:exportmanually.
Testing
License
MIT
All versions of enumshare with dependencies
illuminate/contracts Version ^11.0||^12.0||^13.0
illuminate/console Version ^11.0||^12.0||^13.0
symfony/finder Version ^6.0||^7.0||^8.0