PHPackages                             ion-bazan/composer-diff - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. ion-bazan/composer-diff

ActiveComposer-plugin[Parsing &amp; Serialization](/categories/parsing)

ion-bazan/composer-diff
=======================

Compares composer.lock changes and generates Markdown report so you can use it in PR description.

v1.13.0(9mo ago)1861.8M—7.5%12[3 issues](https://github.com/IonBazan/composer-diff/issues)[1 PRs](https://github.com/IonBazan/composer-diff/pulls)3MITPHPPHP &gt;=5.3.2CI passing

Since Jun 24Pushed 2mo ago7 watchersCompare

[ Source](https://github.com/IonBazan/composer-diff)[ Packagist](https://packagist.org/packages/ion-bazan/composer-diff)[ GitHub Sponsors](https://github.com/IonBazan)[ RSS](/packages/ion-bazan-composer-diff/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (4)Versions (28)Used By (3)

Composer Diff Plugin
====================

[](#composer-diff-plugin)

[![PHP 5.3+ | 7.x | 8.x](https://camo.githubusercontent.com/12c7db0cbed1695cedde08b2d044db66e830b244edec3ddab6bef2eec413a3a6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d253545352e335f2537435f253545375f2537435f253545382d626c75652e737667)](https://packagist.org/packages/ion-bazan/composer-diff)[![Composer v1 | v2](https://camo.githubusercontent.com/c2d3dbeb107b5e5052200e7d01fee386b04b6d505ca127e4d9e82d1a93b35e93/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f6d706f7365722d253545312e315f2537435f253545322d737563636573732e737667)](https://packagist.org/packages/ion-bazan/composer-diff)[![Dependencies: 0](https://camo.githubusercontent.com/bbe41f831684a9df3fb6dec2eb24be2f139420e1156f8b6147a037826153acb3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646570656e64656e636965732d302d737563636573732e737667)](https://packagist.org/packages/ion-bazan/composer-diff)[![Latest version](https://camo.githubusercontent.com/8da37b34249b895f02852cf41c58209bf3015da3311e24afb2e0af469702b905/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f696f6e2d62617a616e2f636f6d706f7365722d646966662e737667)](https://packagist.org/packages/ion-bazan/composer-diff)[![GitHub Workflow Status](https://camo.githubusercontent.com/2d96a6748d071db6894e50745309dffed00ce50bd9ad6b3f69c1698fdaf54598/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f496f6e42617a616e2f636f6d706f7365722d646966662f746573742e796d6c)](https://github.com/IonBazan/composer-diff/actions)[![Codecov](https://camo.githubusercontent.com/f2767fb60caaedfe1ef383fc5e62eaef4df1c40bd57b14b788e89eeed5f4016d/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f67682f496f6e42617a616e2f636f6d706f7365722d64696666)](https://codecov.io/gh/IonBazan/composer-diff)[![Mutation testing badge](https://camo.githubusercontent.com/c2b9fcd577c4e23bf7bfb206dd9e09f81282aec1a76de7028588b1af62f2e431/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f7374796c653d666c61742675726c3d687474707325334125324625324662616467652d6170692e737472796b65722d6d757461746f722e696f2532466769746875622e636f6d253246496f6e42617a616e253246636f6d706f7365722d646966662532466d6173746572)](https://dashboard.stryker-mutator.io/reports/github.com/IonBazan/composer-diff/master)[![Downloads](https://camo.githubusercontent.com/27b6bff01d82ca005f6190bc1dc3eb076ab02da32b40533fa0993704be3de861/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f696f6e2d62617a616e2f636f6d706f7365722d646966662e737667)](https://packagist.org/packages/ion-bazan/composer-diff)[![License](https://camo.githubusercontent.com/7dd90934c304f41105fd7dd44623fcbbff0c57528ad234f1c8630dccda9ccb7a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f696f6e2d62617a616e2f636f6d706f7365722d646966662e737667)](https://packagist.org/packages/ion-bazan/composer-diff)

Generates packages changes report in Markdown format by comparing `composer.lock` files. Compares with last-committed changes by default.

**Now available as [GitHub Action](https://github.com/marketplace/actions/composer-diff)!**

**Web version available at **

[![preview](preview.png)](preview.png)

Installation
============

[](#installation)

```
composer global require ion-bazan/composer-diff
```

Usage
=====

[](#usage)

```
composer diff # Displays packages changed in current git tree compared with HEAD
composer diff --help # Display detailed usage instructions
```

Example output
--------------

[](#example-output)

Prod PackagesOperationBaseTargetpsr/event-dispatcherNew-1.0.0symfony/deprecation-contractsNew-v2.1.2symfony/event-dispatcherUpgradedv2.8.52v5.1.2symfony/event-dispatcher-contractsNew-v2.1.2symfony/polyfill-php80New-v1.17.1phpNew-&gt;=5.3Dev PackagesOperationBaseTargetphpunit/php-code-coverageDowngraded8.0.27.0.10phpunit/php-file-iteratorDowngraded3.0.22.0.2phpunit/php-text-templateDowngraded2.0.11.2.1phpunit/php-timerDowngraded5.0.02.1.2phpunit/php-token-streamDowngraded4.0.23.1.1phpunit/phpunitDowngraded9.2.58.5.8sebastian/code-unit-reverse-lookupDowngraded2.0.11.0.1sebastian/comparatorDowngraded4.0.23.0.2sebastian/diffDowngraded4.0.13.0.2sebastian/environmentDowngraded5.1.14.2.3sebastian/exporterDowngraded4.0.13.1.2sebastian/global-stateDowngraded4.0.03.0.0sebastian/object-enumeratorDowngraded4.0.13.0.3sebastian/object-reflectorDowngraded2.0.11.1.1sebastian/recursion-contextDowngraded4.0.13.0.0sebastian/resource-operationsDowngraded3.0.12.0.1sebastian/typeDowngraded2.1.01.1.3sebastian/versionDowngraded3.0.02.0.1phpunit/php-invokerRemoved3.0.1-sebastian/code-unitRemoved1.0.3-Options
-------

[](#options)

- `--base` (`-b`) - path, URL or git ref to original `composer.lock` file
- `--target` (`-t`) - path, URL or git ref to modified `composer.lock` file
- `--no-dev` - ignore dev dependencies (`require-dev`)
- `--no-prod` - ignore prod dependencies (`require`)
- `--direct` (`-D`) - only show direct dependencies
- `--with-platform` (`-p`) - include platform dependencies (PHP, extensions, etc.)
- `--with-links` (`-l`) - include compare/release URLs
- `--with-licenses` (`-c`) - include license information
- `--format` (`-f`) - output format (mdtable, mdlist, json, github) - default: `mdtable`
- `--gitlab-domains` - custom gitlab domains for compare/release URLs - default: use composer config

Advanced usage
--------------

[](#advanced-usage)

```
composer diff master # Compare current composer.lock with the one on master branch
composer diff master:composer.lock develop:composer.lock -p # Compare master and develop branches, including platform dependencies
composer diff --no-dev # ignore dev dependencies
composer diff -p # include platform dependencies
composer diff -f json # Output as JSON instead of table
```

You can find more documentation in the [docs](docs) directory.

### Strict mode

[](#strict-mode)

To help you control your dependencies, you may pass `--strict` option when running in CI. If there are any changes detected, a non-zero exit code will be returned.

Exit code of the command is built using following bit flags:

- `0` - OK.
- `1` - General error.
- `2` - There were changes in prod packages.
- `4` - There were changes is dev packages.
- `8` - There were downgrades in prod packages.
- `16` - There were downgrades in dev packages.

You may check for individual flags or simply check if the status is greater or equal 8 if you don't want to downgrade any package.

Contributing
============

[](#contributing)

Composer Diff is an open source project that welcomes pull requests and issues from anyone. Before opening pull requests, please consider reading our short [Contribution Guidelines](docs/CONTRIBUTING.md).

Similar packages
================

[](#similar-packages)

While there are several existing packages offering similar functionality:

- [jbzoo/composer-diff](https://packagist.org/packages/jbzoo/composer-diff) - requires PHP 7.2+, no composer plugin support
- [josefglatz/composer-diff-plugin](https://packagist.org/packages/josefglatz/composer-diff-plugin) - works only right after install/update
- [davidrjonas/composer-lock-diff](https://packagist.org/packages/davidrjonas/composer-lock-diff) - does not work as composer plugin

This package offers:

- Support for wide range of PHP versions, starting from 5.3.2 up to 8.0 and newer.
- No dependencies if you run it as composer plugin.
- Both standalone executable and composer plugin interface - you choose how you want to use it.
- Allows generating reports in several formats.
- Extra Gitlab domains support.
- [GitHub Action](https://github.com/marketplace/actions/composer-diff) with example workflow
- 100% test coverage.
- MIT license.

###  Health Score

58

—

FairBetter than 98% of packages

Maintenance75

Regular maintenance activity

Popularity57

Moderate usage in the ecosystem

Community25

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 69.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~75 days

Recently: every ~50 days

Total

26

Last Release

270d ago

Major Versions

v0.3.1 → v1.0.02021-03-08

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1985514?v=4)[Ion Bazan](/maintainers/IonBazan)[@IonBazan](https://github.com/IonBazan)

---

Top Contributors

[![IonBazan](https://avatars.githubusercontent.com/u/1985514?v=4)](https://github.com/IonBazan "IonBazan (83 commits)")[![darthsteven](https://avatars.githubusercontent.com/u/95782?v=4)](https://github.com/darthsteven "darthsteven (21 commits)")[![davereid](https://avatars.githubusercontent.com/u/62967?v=4)](https://github.com/davereid "davereid (6 commits)")[![giggsey](https://avatars.githubusercontent.com/u/305730?v=4)](https://github.com/giggsey "giggsey (3 commits)")[![trakos](https://avatars.githubusercontent.com/u/6437642?v=4)](https://github.com/trakos "trakos (2 commits)")[![szepeviktor](https://avatars.githubusercontent.com/u/952007?v=4)](https://github.com/szepeviktor "szepeviktor (2 commits)")[![davereid-pfg](https://avatars.githubusercontent.com/u/68073680?v=4)](https://github.com/davereid-pfg "davereid-pfg (1 commits)")[![indykoning](https://avatars.githubusercontent.com/u/15870933?v=4)](https://github.com/indykoning "indykoning (1 commits)")

---

Tags

composercomposer-diffcomposer-plugindiffgithublockmarkdownpackagespackagistphppullrequestcomposerdiffmarkdowngithubpackagespackagistcomposer.lockPullRequest

### Embed Badge

![Health badge](/badges/ion-bazan-composer-diff/health.svg)

```
[![Health](https://phpackages.com/badges/ion-bazan-composer-diff/health.svg)](https://phpackages.com/packages/ion-bazan-composer-diff)
```

###  Alternatives

[league/commonmark

Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)

2.9k404.0M702](/packages/league-commonmark)[erusev/parsedown

Parser for Markdown.

15.0k151.8M732](/packages/erusev-parsedown)[michelf/php-markdown

PHP Markdown

3.5k52.4M345](/packages/michelf-php-markdown)[league/html-to-markdown

An HTML-to-markdown conversion helper for PHP

1.9k28.6M199](/packages/league-html-to-markdown)[cebe/markdown

A super fast, highly extensible markdown parser for PHP

1.0k32.5M136](/packages/cebe-markdown)[jbzoo/composer-diff

See what has changed after a composer update.

53888.9k1](/packages/jbzoo-composer-diff)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
