puli/repository
A PHP repository component for managing resource path and URL mappings. It provides a central registry for locating files across packages, supports filesystem and URL repositories, and integrates with Puli’s resource discovery system.
loadViewsFrom, loadTranslationsFrom, mergeConfigFrom, publishes) is what actually decides this today; Puli informs whether we need an additional discovery layer beyond it.Adopt only in these narrow cases:
Do not adopt for any new Laravel application. Signals against it:
Look elsewhere when you need:
league/flysystem, Laravel Storage + disks.loadViewsFrom, publishes, mergeConfigFrom).nwidart/laravel-modules or Composer-based discovery (spatie/laravel-package-tools).symfony/filesystem plus a small in-house resolver; realistically 100–200 lines.nyholm/psr7, guzzlehttp/psr7).Executive summary. Puli is a well-designed but abandoned 2016 PHP library for treating files and other resources as mountable, addressable paths. It solved a real problem — letting packages and plugins contribute assets, views, and config from anywhere in the filesystem — but it has had no release or security patch in roughly a decade and targets a PHP 5/Symfony 2–3 world that is incompatible with our stack. Recommendation: do not add it as a dependency. The capabilities it represents are already covered by supported, free components we run today: Laravel's filesystem disks and service-provider resource publishing, plus Flysystem underneath. The 440 stars and 3.54 score are a historical-interest signal, not an endorsement.
For engineering. Treat this as a design document, not a vendor. Its value is the model: named path schemes, mount points, and pluggable repositories as a clean way to decouple "where a resource lives" from "who consumes it." If we hit a genuine plugin/theme asset-discovery requirement on the roadmap, the cheap path is a 1–2 day spike on Laravel's provider conventions plus Flysystem, borrowing Puli's concepts. Adopting the package itself means: unresolvable Composer constraints on PHP 8, forking to patch abandoned internals, writing our own service provider and test suite, and a permanent maintainer burden with a bus factor of zero. The build cost is small; the carry cost is not.
For product. No customer-facing feature is gated on this package. The only decision it should influence is whether to invest in a first-class resource-locator capability at all — and if we do, the implementation will not be Puli. Budget it as design inspiration, not as a line item.
How can I help you explore Laravel packages today?