nmangold/composer-remedy

A Composer plugin to automatically detect and resolve dependency conflicts, with a focus on Drupal projects.

Maintainers

Package info

github.com/nmangold/composer-remedy

Type:composer-plugin

pkg:composer/nmangold/composer-remedy

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-main 2026-04-15 04:17 UTC

This package is auto-updated.

Last update: 2026-04-15 04:23:15 UTC


README

A production-quality Composer plugin that automatically detects and resolves dependency conflicts, with a strong focus on Drupal projects.

๐ŸŽฏ Features

  • Programmatic Conflict Analysis: Uses Composer's internal solver to detect conflicts accurately.
  • Dependency Graph Building: Maps out the relationships between conflicting packages.
  • Minimal Resolution Planning: Computes the smallest set of version changes required to fix conflicts.
  • Risk Assessment: Classifies the risk level of suggested changes (LOW, MEDIUM, HIGH, EXTREME).
  • Drupal Integration: Specific rules for drupal/core and drupal/core-recommended.
  • Dry-run and Auto-apply: See the plan or apply it automatically.

๐Ÿ“ฆ Installation

composer require nmangold/composer-remedy

โš™๏ธ Usage

When you encounter a dependency conflict, run:

composer drupal:fix-conflicts

Options

  • --dry-run: Show the resolution plan without making any changes.
  • --apply: Automatically execute composer require with the computed version fixes.

๐Ÿ›  Architecture

The plugin follows SOLID principles and uses a service-oriented architecture:

  • ConflictAnalyzer: Triggers a simulated update to capture SolverProblemsException.
  • DependencyGraphBuilder: Constructs a graph of involved packages.
  • ResolutionPlanner: Iteratively relaxes constraints to find a valid resolution.
  • RiskAnalyzer: Evaluates the impact of version bumps.
  • DrupalAnalyzer: Applies Drupal-specific logic for core and modules.

๐Ÿงช Testing

Run the test suite with PHPUnit:

vendor/bin/phpunit

๐Ÿ›ก License

This project is licensed under the MIT License.