wyrihaximus/makefiles
Reusable Makefile building blocks for PHP projects from WyriHaximus. Install with Composer and compose shared CI, testing, and code-quality targets into your own Makefile, keeping build automation consistent and maintainable across repositories.
composer validate, license/readme year updaters) that regenerate on composer install/update. The decision it informs is whether developer-experience work belongs on the roadmap as an owned internal platform or as an adopted open-source dependency — this is the low-cost "buy" side of that trade-off.composer.json (extra.wyrihaximus.supported-features toggling code-style, static-analysis, unit-tests, composer-dependency-checkers, windows, zts), a PM can mandate one baseline pipeline for all PHP services while letting each repo opt out of checks that don't apply. That turns "should every repo run mutation testing?" from a per-team argument into a policy default.migrations-php-set-phpstan-paths-in-config, cleanup of @psalm-suppress/@phpstan-ignore-next-line lines, removal of PHPUnit/Infection configs when unit-tests is disabled). That tells a PM the package is designed to own the config files it manages — a good fit for new repositories, a negotiation for existing ones.Consider it when:
make targets and QA configuration drift.supported-features flags are the main reason to prefer this over a copied-and-pasted Makefile.Look elsewhere when:
composer scripts already cover most of this ground with first-party support; layering a second, opinionated Makefile system on top creates two competing sources of truth.composer.json extras — custom target graphs, non-PHP steps, monorepo path selection. This is a curated block set, not a general build system.windows feature flag exists, which implies it is a supported-but-conditional path rather than a proven one.To executives (one paragraph): This is a small, MIT-licensed Composer dependency that standardizes how our PHP repositories run their quality checks — tests, static analysis, code style, dependency audits — so every repo behaves the same way with almost no per-repo maintenance. The pitch is consistency and speed, not features: less duplicated build configuration, faster CI, quicker onboarding, and one policy for quality gates instead of a dozen local variants. Adoption cost is measured in hours, there is no runtime footprint in our products, and removing it is a config change, not a migration. The trade-off we are accepting is maturity risk — it is a pre-1.0 package from a single maintainer with no formal support — which we mitigate by piloting on internal, non-customer-facing repositories first and pinning versions.
To engineering (the substance):
composer.json let each repo declare what it actually supports.Recommendation: treat it as a low-cost, reversible bet on developer-experience standardization — worth a scoped pilot, not worth a mandate until the pilot proves CI time and onboarding gains and we have confirmed the config-file ownership model is acceptable to the teams involved.
How can I help you explore Laravel packages today?