Weave 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
Metadata Puli File Locator

Metadata Puli File Locator Laravel Package

mi/metadata-puli-file-locator

A Laravel package that locates files and resources through Puli metadata, resolving package paths and repository mappings from a single, consistent API. It simplifies cross-package resource discovery and integrates Puli’s path resolution into your PHP application.

View on GitHub
Deep Wiki
Context7

Puli-FileLocator for JMS Metadata

Frequently asked questions about Metadata Puli File Locator
What is mi/metadata-puli-file-locator used for?
It is an adapter that implements the file locator contract from mi/metadata on top of a Puli resource repository. Instead of hard-coding absolute filesystem paths, metadata readers ask for a logical path such as /app/assets/foo and the locator resolves it through Puli's package and namespace mappings. This keeps configuration portable across environments and deployment layouts. It is a small piece of glue rather than a standalone resource-management library.
How do I install mi/metadata-puli-file-locator with Composer?
Install it alongside mi/metadata plus a Puli repository implementation, since Puli is the actual source of path resolution and is not bundled here. Typical setup is composer require mi/metadata-puli-file-locator mi/metadata and then puli/repository, with puli/cli, puli/discovery and puli/manager added if you drive configuration from a puli.json file. Be prepared to handle dependency resolution issues on modern PHP versions, because Puli's constraints target the PHP 5.x and 7.x era. There is no published composer.lock combination or dependent package to copy from.
Does it support Laravel 11 and PHP 8.2 or 8.3?
There is no framework integration or version support statement in the package itself, so Laravel version compatibility is effectively whatever the underlying Puli constraints allow. Puli has been unmaintained since around 2015 and its Composer graph is pinned to older PHP releases, so installing on PHP 8.2 or 8.3 usually requires --ignore-platform-reqs, a fork, or a compatibility shim. None of those are supportable long-term positions. Treat PHP 8 support as unvalidated until you test it yourself.
Does this package ship a Laravel service provider or facade?
No. Despite being described as Laravel-friendly, the repository contains no service provider, no facade, and no publishable configuration. It is a plain Composer library that you wire into Laravel's container manually, binding the Puli repository and the locator implementation yourself. That is not disqualifying, but it removes any framework-integration argument from the evaluation.
How does Puli path resolution work in this package?
The locator accepts a logical path and asks the Puli repository to map it to a concrete resource, using Puli's package and namespace mappings rather than absolute filesystem paths. Callers stay unaware of the physical directory layout, so the same logical path can resolve differently per environment. The contract direction matters: if the package implements a Puli interface, Puli owns the resolution logic; if it requires the application to supply repository bindings, you own more of the setup. Read the source to confirm which applies to your case.
Is Puli still maintained, and is this package a safe dependency?
Puli is effectively abandoned, with no security response, no PHP or Composer major-version tracking, and no bug fixes since roughly 2015. This package inherits that risk and also shows zero stars and zero dependents, so there is no public evidence it installs cleanly anywhere. The maintenance burden is concentrated upstream rather than in the repository's own small codebase, but a single-vendor package with no external contributors means nobody outside MovingImage24 is likely to fix it. The MIT license softens this by letting you fork, patch, and vendor if needed.
Does it only locate files, or does it also parse and validate metadata?
Based on the package description, its job is path resolution: mapping a logical resource path to something readable through Puli. It is not documented as a metadata parser or validator, and no format version support is stated. That distinction matters because parsing would make metadata format drift a maintenance obligation you inherit. Verify against the source before you assume the surface area is limited to locating.
What are the alternatives to a Puli-backed file locator?
For Laravel applications, the Storage facade or Flysystem covers most resource-location needs with maintained, framework-native APIs. Symfony's file-locator and asset components offer a similar logical-path-abstraction pattern with ongoing support. If you specifically need the mi/metadata contract, writing a small locator implementation over Laravel's filesystem APIs is realistic and avoids importing a retired abstraction. Only adopt the Puli-backed version if your application already runs a Puli repository.
How can I test the file locator in my application?
No public tests or filesystem fixtures are documented, so assume you need to write your own coverage. Wrap the file locator contract behind an interface, use a fake implementation for unit tests, and add one integration test that resolves a known logical path against a real fixture directory through an actual Puli repository. That integration test is where PHP-version and Puli-constraint problems will surface first.
What license is mi/metadata-puli-file-locator released under, and can I fork it?
It is MIT licensed, which permits forking, patching, and vendoring without legal review. That is the strongest signal in the package's favour, since it turns the risk of an unmaintained upstream dependency from blocked into absorbable. If you must use it, plan to pin and vendor the fork rather than relying on upstream releases.
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.
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core