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

Composer License Checker Laravel Package

dominikb/composer-license-checker

A Composer plugin that checks your project's dependency licenses against configurable allow and deny lists, helping you spot incompatible or risky packages early and keep releases compliant.

Deep Wiki
Context7

Technical Evaluation

Architecture fit. dominikb/composer-license-checker is a Composer-level tool, not a Laravel package in the framework sense. It operates on the dependency graph resolved in composer.lock, which means it sits alongside the build rather than inside the application. For a Laravel/PHP estate this is a good fit: it requires no service container bindings, no middleware, no config publish step, and adds zero runtime footprint when installed with --dev. It is stack-agnostic across Composer projects, so the same tooling and policy can cover Laravel applications, internal packages, and standalone PHP libraries without a second vendor relationship.

Integration feasibility. Low effort. Install as a require-dev dependency, define an allow/deny policy for licenses, and invoke it as a Composer script or CI step. The work is measured in hours, not sprints. The real effort is not engineering — it is the legal/policy decision about which licenses are acceptable, and that is a stakeholder dependency, not a technical one.

Technical risk.

  • Detection accuracy. License compliance tools are only as good as the metadata in third-party composer.json files. Packages that omit a license field, declare non-SPDX strings, or dual-license will produce ambiguous results. The tool's normalization behavior must be verified before enforcement, not assumed.
  • Scope semantics. Whether dev dependencies are evaluated separately from production dependencies matters enormously — a GPL test utility is a different risk profile from a GPL runtime dependency. This must be confirmed against the source, not the README.
  • Maintainer concentration. At 58 stars and a single maintainer, this is bus-factor-one tooling. The recent release date is a positive signal of activity, but the project has no institutional backing. Pinning versions and retaining a fallback is prudent.
  • Silent no-op. As a Composer plugin it may be subject to allow-plugins configuration; if disabled in a CI image, the check can pass without ever running. That is a false sense of compliance and the single most dangerous failure mode here.

Key questions.

  1. Does it distinguish require from require-dev, and can policy differ between them?
  2. How are missing, malformed, or dual licenses reported — fail-open or fail-closed?
  3. Does it emit a machine-readable format (JSON) suitable for dashboards and SBOM generation, or only human-readable console output?
  4. What is the exit-code contract, and is there a non-blocking report mode?
  5. Does it read only the lockfile, or does it make network calls to Packagist (a CI reliability concern)?
  6. What is the maintainer's release cadence and responsiveness on issues, and does it support Composer 2.x plugin API changes?
  7. What are the credible alternatives (Licensee, commercial SCA tools) and what would migration cost?

Integration Approach

Stack fit. Compatible with PHP 7.4+/8.x and Composer 2.x projects, including Laravel 8 through current. Install with composer require --dev dominikb/composer-license-checker, keep it out of production images, and wire it into the existing CI workflow alongside PHPUnit and static analysis. Ensure allow-plugins is explicitly permitted for this plugin in composer.json so CI does not silently skip it.

Migration path. Do not start in enforcement mode. Phase it:

  1. Run in report-only mode on a representative repository to establish a license baseline.
  2. Classify the inventory with legal: permissive (MIT, Apache-2.0, BSD, ISC) auto-approved; weak/strong copyleft (LGPL, GPL, AGPL) requires review; unknown or proprietary blocked pending clarification.
  3. Encode that classification as policy in a shared, versioned config.
  4. Flip to blocking enforcement on protected branches only.

Compatibility. The tool tracks the Composer plugin API, so a Composer major upgrade is the primary compatibility event to watch. Pin to a specific minor version, review the changelog on upgrade, and validate against the CI base image's Composer and PHP versions. There is no application-code compatibility surface.

Sequencing. Pilot on one repo → portfolio-wide baseline inventory → policy sign-off with legal → advisory CI gate → blocking gate on main → extend output into SBOM and release sign-off artifacts → establish a recurring review cadence tied to dependency upgrade cycles. The engineering sequence is short; the policy sequence is the critical path. Run them in parallel from week one.

Operational Impact

Maintenance. Minimal ongoing engineering: a version bump alongside routine Composer updates. The genuine maintenance burden is policy upkeep — the approved-license list needs an owner and a review cadence, otherwise it calcifies and teams start requesting blanket exceptions.

Support. Assign ownership to platform engineering or developer experience, with legal as the policy authority and engineering as the operator. Publish a short runbook covering: what to do when a build fails on a license, how to request an exception, and how exceptions are recorded and time-boxed. Without this, the gate generates support tickets rather than compliance.

Scaling. Excellent. The scan is lockfile-based and fast, adding seconds to CI. Scale comes from distribution, not compute: publish the policy as a shared, reusable CI workflow or a shared config package so dozens of repositories inherit one definition. Centralizing policy is what makes the tool a governance control rather than a per-team checkbox.

Failure modes.

  • False negatives from absent or inaccurate upstream license metadata — the most likely and most consequential failure.
  • Plugin disabled in a CI image, producing a green build that verified nothing.
  • Config drift as repositories fork their own allow-lists; mitigate with a shared policy source and a test that asserts conformity.
  • Over-blocking legitimate dependencies, which erodes trust and drives teams to bypass the gate.
  • Maintainer abandonment — mitigated by version pinning and a documented fallback path to an alternative scanner or a simple Composer script.

Ramp-up. Roughly half a day for a competent PHP engineer to pilot and wire into CI. The organizational ramp-up is longer: legal review of the baseline inventory, exception handling design, and developer communication. Budget one to two weeks end-to-end for a first team, then near-zero marginal cost per additional repository once the shared workflow exists.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core