johnkrovitch/sam-bundle
johnkrovitch/sam-bundle is a Symfony bundle that integrates SAM functionality into PHP applications, adding configuration and service wiring so you can use SAM features in Symfony projects with less boilerplate and easier setup.
app/config rather than a bespoke build script. Its existence is a useful data point that a small, config-first build command is a legitimate product surface — teams will pay integration cost to avoid hand-rolled Node/Gulp glue in CI.Consider it only in a narrow, already-constrained situation:
app/config directory layout (Symfony 4 moved to config/, so this package's stated design is pre-Flex).console command with minimal code change and no new JavaScript-side configuration.Look elsewhere — and default to looking elsewhere — when:
app/config assumption; for Laravel, the analogous need is met by Vite (laravel-vite-plugin), Mix, or a simple Composer script — none of which require adopting an archived third-party bundle. The brief describes this as a Laravel/PHP package; it is not Laravel-oriented, and that mismatch alone should end the evaluation.Net: this is a reference, not a dependency. Read it for the pattern — and read the v0.2 diff in particular, since "initial build on watch" and PSR-4 layout are the two details most often got wrong in hand-rolled equivalents — then write ~50 lines yourself if you still need the pattern.
Executive summary: We re-evaluated johnkrovitch/sam-bundle, a small Symfony bundle that adds a console command to build front-end assets from configuration, following the v0.2 release. That release is maintenance, not revival: it fixes an infinite build loop, adds an initial build to the watch command, tidies the build command, introduces cross-environment tests, and moves to PSR-4. Recommendation unchanged: do not adopt. The repository is archived, has no known dependents, and its configuration model assumes a Symfony directory layout superseded in Symfony 4. One bugfix release buys us a thin convenience wrapper in exchange for an unmaintained dependency and a guaranteed future migration.
Why this matters strategically: the problem it solves is real — build tooling shouldn't require bespoke glue — but that problem has been solved by first-party tooling in both ecosystems (Webpack Encore and AssetMapper for Symfony; Vite and Mix for Laravel). Betting on a 2018-era third-party wrapper would put us on the wrong side of a consolidation that has already happened. The v0.2 changes are the package converging on behaviour our first-party tooling already ships by default, which reinforces rather than softens that conclusion.
For engineering: the implementation is small and worth reading as prior art — configuration colocated with framework config, a single command entry point, delegation to the underlying compiler. The v0.2 diff is the most useful part to skim: the watch-mode initial build and the PSR-4 move are the two things hand-rolled equivalents most often get wrong. If we have a residual internal need, that scope is a reasonable thing to write in-house in under a day, with the compiler's own CLI as the dependency instead of this bundle.
Cost and risk: cost of adopting is low in licence terms (MIT) but high in total cost — archived, unsupported code, no security patch path, and a rewrite when the underlying compiler or our framework version moves. One 0.2 release does not change that risk profile; if anything, treating a single bugfix as a signal of health is the failure mode to avoid. Cost of declining is essentially zero: no dependents to unwind, no migration to schedule.
Ask: approve closing out this evaluation with the recommendation recorded as "do not adopt, re-review only if upstream unarchives and publishes an ongoing release cadence," and redirect the effort toward consolidating on the framework's supported asset tooling.
How can I help you explore Laravel packages today?