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

Jack Laravel Package

rector/jack

Jack is an experimental CLI for safely upgrading Composer dependencies one version at a time. It can fail CI when too many major updates are overdue, highlight dev deps first, and help you open up next versions gradually to avoid risky big-bang upgrades.

View on GitHub
Deep Wiki
Context7

Getting Started

Install the package with composer require rector/jack --dev. It’s designed for gradual, low-risk dependency upgrades — especially valuable in legacy Laravel apps where dependency debt has accumulated. Your first step should be running vendor/bin/jack breakpoint --dev locally or in CI: it scans composer.json for outdated dev dependencies and fails if more than 5 major versions are behind (configurable via --limit). This surfaces technical debt early without overwhelming you. If your project has severe outdatedness, start with --limit 2 or --limit 1 to build confidence incrementally.

Implementation Patterns

  • CI-Focused Dependency Debt Triage: Add jack breakpoint (e.g., --dev --limit 5) to your CI pipeline. Treat failures as high-priority tech debt — schedule a sprint to resolve them incrementally.
  • Controlled Version Expansion: Run jack open-versions --dev --limit 3 --dry-run first, review changes to composer.json, commit if safe, then composer update. Repeat in small batches — this avoids large, risky updates while leveraging Composer’s resolver safely.
  • Version Alignment: After merges, PRs, or manual updates, run jack raise-to-installed --dry-run to catch cases where your composer.json lags behind the installed versions (e.g., constraints say ^6.4, but 7.2 is installed). Fix the constraint to prevent accidental downgrades.
  • Package-Specific Workflow: For Laravel-specific upgrades (e.g., laravel/framework, illuminate/*), combine --package-prefix illuminate with open-versions to batch related updates and isolate failure surfaces.

Gotchas and Tips

  • PHP Compatibility Safety: Jack opens ranges like ^9.0|^10.0, but Composer may resolve to a PHP 8.1+ version (e.g., PHPUnit 10). Always verify your project’s php requirement supports the new version before committing — run composer show --platform to check.
  • Dry-Run Is Non-Negotiable: All mutating commands (open-versions, raise-to-installed) can create overly broad ranges (e.g., 5.*|7.*). Always use --dry-run, inspect the diff, and consider whether the range is truly safe for your project’s upgrade cadence.
  • Windows CI Quirk: If diffs appear garbled in CI logs (especially with Symfony Console 6.4.24+), ensure Jack ≥0.2.7 is installed — it contains a Windows-specific fix for console output. Pin it in composer.json if needed.
  • Avoid "Version Drift" Traps: After open-versions, always run composer validate and composer check-platform-reqs before committing. The new ranges may expose platform gaps (e.g., ext-imagick missing in CI but required by a newer package).
  • Monorepo Caution: In monorepos with interdependent Laravel packages, jack’s isolated upgrades can cause subtle conflicts. Prefer targeting one group at a time (e.g., --package-prefix symfony) and validate with composer why-not afterward.
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport
twbs/bootstrap4