Weave Code
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

Devtools Laravel Package

moox/devtools

moox/devtools is a Laravel devtools package that streamlines local development with helpful utilities and tooling for debugging, scaffolding, and productivity. Built to integrate cleanly into Laravel apps and speed up everyday developer workflows.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Meta-package for Laravel dev tooling: Fits seamlessly into Laravel ecosystems where PestPHP, Filament, or Livewire are used, but lacks value for non-Laravel PHP projects. The package abstracts dev dependencies (e.g., static analysis, testing, linting) into a single require-dev, reducing composer.json clutter. However, its runtime-agnostic nature means it doesn’t impact production—only dev workflows.
  • Filament v4 dependency: Tight coupling with Filament v4 (evident in 4.0.0 release) may limit adoption for projects using older Filament versions or non-Filament Laravel apps. The package’s compatibility-first approach (per release notes) suggests minimal innovation, prioritizing stability over features.
  • Toolchain standardization: Ideal for teams adopting PestPHP, Livewire, or Blade templating, where bundled tools (e.g., pest-plugin-livewire, blade-capture-directive) add immediate value. Less useful for projects relying on custom dev tooling or non-Laravel stacks.

Integration Feasibility

  • Low-friction adoption: Single composer require-dev command installs all dev dependencies, but hidden complexity exists in nested dependencies (e.g., Pest plugins, Larastan rules). Risk of version conflicts with existing tools (e.g., PHPUnit, custom PHPStan rules).
  • Laravel version agnosticism: No explicit Laravel constraints, but underlying tools (e.g., Testbench, Pest) may enforce implicit requirements (e.g., Laravel 9+ for Testbench v10). Key risk: Projects using older Laravel versions may encounter compatibility issues.
  • Configuration overrides: The package auto-generates configs (e.g., .larastan.neon, .pint.php), but customization requires manual overrides, which could lead to drift if not documented.

Technical Risk

  • Dependency opacity: Meta-packages obscure individual versions, increasing risk of unexpected breaking changes during updates. For example, a composer update could pull in a newer Pest version with incompatible plugins.
  • Toolchain rigidity: Limited flexibility to override specific dependencies (e.g., using a newer Pint version) without forking the meta-package. This could hinder teams needing tailored tooling.
  • Documentation gaps: Minimal release notes and changelogs force teams to reverse-engineer compatibility (e.g., "Why did Larastan fail in CI?"). Lack of failure mode documentation (e.g., "How to debug Pint conflicts") increases onboarding friction.
  • CI/CD fragility: Unified tooling may introduce flaky tests if environments (e.g., Blade directives in CI) aren’t properly configured. Example: blade-capture-directive failing in headless CI setups.

Key Questions

  1. Toolchain alignment:
    • Does the project exclusively use Laravel + Pest + Livewire/Filament? If not, is the meta-package’s value outweighed by its constraints?
    • Are there existing dev dependencies (e.g., custom PHPStan rules) that conflict with the package’s bundled versions?
  2. Version constraints:
    • What’s the project’s Laravel version, and does it align with the meta-package’s underlying tool constraints (e.g., Testbench v10 requires Laravel 9+)?
    • Are there hard requirements for newer tool versions (e.g., Pint v1.20) that the meta-package doesn’t support?
  3. Customization needs:
    • Can the team override individual dependencies (e.g., pestphp/pest:^2.0) without forking? If not, what’s the forking/migration path?
    • Are there custom Pest plugins or Larastan rules that need integration with the meta-package?
  4. CI/CD impact:
    • How will the meta-package affect test suite stability (e.g., Pest plugin compatibility) and build times (e.g., Larastan analysis)?
    • Are there environment-specific configurations (e.g., Blade directives in CI) that require special handling?
  5. Long-term maintenance:
    • What’s the exit strategy if the meta-package becomes outdated or unsupported? Can dependencies be easily unbundled?
    • How will the team monitor for breaking changes in underlying tools (e.g., Pest, Larastan)?

Integration Approach

Stack Fit

  • Laravel-first: Perfect for Laravel + Pest + Livewire/Filament stacks, where the meta-package consolidates critical dev tools (e.g., static analysis, testing, Blade templating). Misaligned for:
    • Non-Laravel PHP projects (e.g., Symfony, plain PHP).
    • Teams using PHPUnit or custom dev tooling (e.g., custom PHPStan rules).
  • Dev workflow optimization: Reduces cognitive load for developers by standardizing tooling (e.g., one command for Pint, Larastan, Pest). Ideal for SaaS platforms or agile teams needing consistent CI/CD tooling.
  • Filament/Livewire synergy: Bundled plugins (e.g., pest-plugin-livewire) provide out-of-the-box support for modern Laravel features, accelerating development.

Migration Path

  1. Audit current tooling:
    • Inventory existing require-dev dependencies (e.g., phpunit/phpunit, nunomaduro/collision).
    • Identify conflicts (e.g., manually installed Pest vs. meta-package’s version).
  2. Phased rollout:
    • Phase 1: Replace non-critical tools (e.g., Pint, Larastan) with the meta-package in a feature branch.
      composer require-dev moox/devtools --with-all-dependencies
      composer remove-dev php-cs-fixer larastan
      
    • Phase 2: Migrate core testing tools (e.g., Pest, Testbench) after validating compatibility.
    • Phase 3: Update CI/CD pipelines to use meta-package commands (e.g., ./vendor/bin/pest).
  3. Configuration alignment:
    • Merge custom configs (e.g., .pint.php, .larastan.neon) with auto-generated ones from the meta-package.
    • Document overrides in DEPENDENCIES.md (e.g., "Using custom Larastan rules in app/rules.neon").
  4. Testing:
    • Run local dev workflows (e.g., pest, pint, larastan) to catch conflicts.
    • Validate CI/CD with a dry run of the full test suite.

Compatibility

  • Pest plugins:
    • Ensure pest-plugin-laravel/pest-plugin-livewire align with the project’s Laravel/Pest versions. Example: Pest v4 may not support Livewire v3.
    • Debug tip: Use ./vendor/bin/pest --debug to check plugin loading.
  • Testbench:
    • Verify orchestra/testbench compatibility with Laravel’s version (e.g., Testbench v10.x requires Laravel 9+).
    • Update phpunit.xml to include Testbench’s service providers if using legacy PHPUnit tests.
  • Blade directives:
    • blade-capture-directive requires Laravel’s Blade compiler. Gotcha: Fails in non-Laravel contexts or CI without Blade setup.
    • Fix: Use BladeCapture::capture() in tests instead of directives for broader compatibility.
  • Larastan:
    • Auto-generated .larastan.neon may be too strict. Customize with:
      includes = [app, config]
      level = 5
      memory_limit = 1G
      

Sequencing

  1. Isolate in a branch:
    • Add moox/devtools to a new branch and run composer update to catch conflicts early.
  2. Test locally:
    • Validate all dev workflows (e.g., pest, pint, larastan) before merging.
    • Check for missing configs (e.g., .pest.php may need manual creation).
  3. CI/CD validation:
    • Run a full CI pipeline to ensure no toolchain failures (e.g., Pint formatting, Larastan analysis).
    • Monitor for flaky tests (e.g., Livewire plugin issues).
  4. Document changes:
    • Update README.md with:
      • Installed tools (e.g., "Using Pest v4.2 + Larastan v1.0").
      • Overrides (e.g., "Custom Larastan rules in app/rules.neon").
      • Troubleshooting steps (e.g., "Run ./vendor/bin/pest --debug for plugin issues").

Operational Impact

Maintenance

  • Reduced update overhead:
    • Single composer update handles all dev tools, but transitive dependencies may introduce hidden risks (e.g., a Pint update breaking Larastan).
    • **
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.
ilhamsyabani/laravel-volt-starter
thethunderturner/filament-latex
ghostcompiler/laravel-querybuilder
webrek/laravel-telescope-mongodb
anousss007/blatui
zatona-eg/zatona-eg-api
cocosmos/filament-sticky-save-bar
patrickbussmann/oauth2-apple
3brs/enterprise-security-bundle
anousss007/vigilance
supportpal/eloquent-model
ardenexal/fhir-models
laravel-at/laravel-image-sanitize
romalytar/yammi-audit-log-laravel
ardenexal/fhir-validation
arshaviras/weather-widget
laravel-chronicle/core
sunchayn/nimbus
daikazu/eloquent-salesforce-objects
unseen-codes/chat