Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Pretty Package Versions Laravel Package

jean85/pretty-package-versions

Lightweight wrapper to fetch human-friendly version strings for installed Composer dependencies. Works across Composer 1 and 2 with a smooth upgrade path, using the appropriate backend (InstalledVersions or package-versions-deprecated) as needed.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: The package is a lightweight, dependency-free wrapper designed to abstract Composer version handling differences between v1 and v2. It integrates seamlessly into Laravel applications for version display (e.g., debug panels, health checks) without introducing runtime overhead or architectural complexity. Its single-class design aligns with Laravel's service-oriented structure.

Integration feasibility: High. Requires only composer require with version constraint ^1.5 || ^2.0. No configuration needed – static methods (PrettyVersions::getVersion()) work immediately after installation. Zero additional dependencies beyond Composer itself. Fully compatible with Laravel's Composer-based dependency management.

Technical risk: Low. Actively maintained with recent PHP 8.4 support and Composer 2.x compatibility. Historical issues (e.g., Composer 2.0.14 deprecations) were promptly resolved. Primary risk is edge-case handling for replaced/provided packages, but the package explicitly throws ProvidedPackageException/ReplacedPackageException for safe handling. Low dependency count (0) suggests minimal transitive risk.

Key questions:

  • Does our Laravel version (≥8.0) meet PHP 7.4+ requirement?
  • Are we using Composer 2.1.0+ (required for 2.1.0+ releases)?
  • How will we handle VersionMissingExceptionInterface exceptions for replaced/provided packages in error logging?

Integration Approach

Stack fit: Ideal for Laravel applications. Works natively with Composer's InstalledVersions class and Laravel's dependency management system. No conflicts with framework components – purely a utility for version string formatting in controllers, CLI commands, or logging.

Migration path:

  1. Replace ocramius/package-versions with jean85/pretty-package-versions via Composer.
  2. Update method names (e.g., getCommitHash()getReference()).
  3. For root package access, switch from PackageVersions\Versions::ROOT_PACKAGE_NAME to PrettyVersions::getRootPackageName().
  4. Implement exception handling for ProvidedPackageException/ReplacedPackageException where needed.

Compatibility: Fully compatible with Laravel 9+ (PHP 8.0+). Works with Composer 2.1.0+ (2.1.0+ releases) or Composer 1.x (via 1.5+). No Laravel-specific dependencies – pure PHP utility.

Sequencing:

  1. Add package to composer.json and run composer update.
  2. Audit existing version-handling code for Composer-specific logic.
  3. Replace with PrettyVersions::getVersion() calls.
  4. Test edge cases (e.g., dev-master, RC releases, replaced packages).
  5. Implement exception handling for version-missing scenarios.

Operational Impact

Maintenance: Minimal overhead. Small codebase (≈500 LOC) with comprehensive tests (95%+ coverage). Active maintenance with recent releases (2

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport
twbs/bootstrap4
php-http/client-implementation
phpcr/phpcr-implementation
cucumber/gherkin-monorepo
haydenpierce/class-finder
psr/simple-cache-implementation
uri-template/tests