puli/composer-plugin
Composer plugin that integrates Puli, the PHP resource management library, with Composer. It discovers Puli-enabled packages during install/update and keeps Puli's resource repository and path mappings in sync, simplifying asset discovery and package resource configuration.
puli/composer-plugin exists solely to keep that abstraction in sync with Composer installs and updates. The decision this informs is whether we need a first-class resource layer at all; the market's answer (Puli was abandoned; the ecosystem standardized on PSR-4 autoloading, package-relative paths, Symfony Flex recipes, and front-end bundlers) is effectively "no."composer.json, the relevant decision is when we remove it, not how we extend it.install/update. That is a materially different risk class from a library. Composer 2.2+ allow-plugins makes this an explicit, auditable decision — good justification for a standing policy on which install-time plugins we permit.Consider only if all of the following hold:
puli.json and depends on Puli's path resolution at runtime.puli.json entries, puli:// / resource-ID references in code and templates, and plugin/theme packages that publish resources.Look elsewhere when:
__DIR__-relative paths, or a modern asset pipeline (Symfony AssetMapper / Webpack Encore / Vite) for front-end resources.allow-plugins) plus an unmaintained plugin is a governance and breakage hazard.composer/installers, Symfony Flex recipes, or explicit Composer scripts cover most of it with maintained code.For executives (one paragraph): puli/composer-plugin is a small integration plugin for an abandoned PHP resource-management tool. It was last released in March 2016, has negligible community traction (38 stars), no active maintainer, and no security support. It carries above-average risk because Composer plugins execute code during dependency installation. It is not a strategic investment and not a build-vs-buy candidate — the capability it provided has been superseded by standard PHP conventions and modern asset tooling. Recommendation: treat it as technical debt, fund a scoped exit, and do not approve new adoption.
For engineering leadership:
composer update is an unpatched code-execution surface gated only by allow-plugins.puli.json entries and resource-ID references, replace each with PSR-4 paths or a maintained asset mapper, then drop the plugin and the Puli dependency together. Scope is countable, which makes it plannable.allow-plugins allowlisting.How can I help you explore Laravel packages today?