nikolaposa/version library directly (via composer require nikolaposa/version).VersionProvider pattern can be replicated in Laravel’s Service Provider or Facade (e.g., VersionService).VERSION files or environment variables (e.g., APP_VERSION in .env).nikolaposa/version library.REVISION file. Requires custom provider.1.2.3) formats?0.0.0-dev.)nikolaposa/version library directly (no full bundle).VersionService to aggregate providers (Git, file, env vars).version() helper (e.g., app()->version()).php artisan version command.Phase 1: Core Integration
nikolaposa/version and create a VersionService:
// app/Services/VersionService.php
use Nikolaposa\Version\Version;
use Nikolaposa\Version\Provider\GitRepositoryProvider;
class VersionService {
public function get(): string {
$provider = new GitRepositoryProvider(__DIR__.'/../../');
return (new Version())->setProvider($provider)->get();
}
}
AppServiceProvider:
$this->app->singleton(VersionService::class, fn() => new VersionService());
Phase 2: Extensibility
EnvProvider for .env):
class EnvProvider implements ProviderInterface {
public function getVersion(): string {
return env('APP_VERSION', '0.0.0-dev');
}
}
$version = (new Version())
->setProvider(new GitRepositoryProvider())
->setProvider(new EnvProvider())
->get();
Phase 3: UI/API Exposure
@inject('version', 'App\Services\VersionService') in layouts.X-Api-Version header.Artisan::command('version', fn() => echo app(VersionService::class)->get());
GitRepositoryProvider with --git-dir.VERSION file or APP_VERSION env var.git tag -a v1.2.3 -m "Release".git push --tags.APP_VERSION env var for fallback.config('version') after first call).nikolaposa/version for SemVer changes.php artisan version:debug to inspect providers.config('version') or Redis (TTL: 1 hour).| Scenario | Impact | Mitigation |
|---|---|---|
| Missing Git tags | Defaults to 0.0.0-dev |
Configure EnvProvider fallback. |
Corrupt VERSION file |
Uses last Git tag or env var | Validate file integrity in CI. |
| Git repo inaccessible | Fails gracefully | Log error; use env var as backup. |
| CI misconfiguration | Version mismatch | Enforce tagging in PR templates. |
APP_VERSION override for local dev.APP_VERSION=1.2.3-dev in .env.git tag -f v${{ github.ref_name }}).VersionService with mocked providers.How can I help you explore Laravel packages today?