{"id":13803776,"url":"https://github.com/IonBazan/composer-diff","last_synced_at":"2025-05-13T16:32:26.139Z","repository":{"id":40394550,"uuid":"271629916","full_name":"IonBazan/composer-diff","owner":"IonBazan","description":"Compares composer.lock changes and generates Markdown report so you can use it in PR description.","archived":false,"fork":false,"pushed_at":"2025-04-11T13:45:17.000Z","size":1162,"stargazers_count":171,"open_issues_count":2,"forks_count":8,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-14T19:57:16.562Z","etag":null,"topics":["composer","composer-diff","composer-plugin","diff","github","lock","markdown","packages","packagist","php","pullrequest"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/ion-bazan/composer-diff","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IonBazan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"IonBazan"}},"created_at":"2020-06-11T19:24:33.000Z","updated_at":"2025-04-14T17:34:57.000Z","dependencies_parsed_at":"2023-01-30T23:30:49.135Z","dependency_job_id":"2c95d50b-8074-4100-9e66-8df97a018d02","html_url":"https://github.com/IonBazan/composer-diff","commit_stats":{"total_commits":89,"total_committers":7,"mean_commits":"12.714285714285714","dds":0.3707865168539326,"last_synced_commit":"4f10027e77c1347d06e306cee3dab2e121d7dd1e"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IonBazan%2Fcomposer-diff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IonBazan%2Fcomposer-diff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IonBazan%2Fcomposer-diff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IonBazan%2Fcomposer-diff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IonBazan","download_url":"https://codeload.github.com/IonBazan/composer-diff/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253981927,"owners_count":21994359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["composer","composer-diff","composer-plugin","diff","github","lock","markdown","packages","packagist","php","pullrequest"],"created_at":"2024-08-04T01:00:37.781Z","updated_at":"2025-05-13T16:32:21.119Z","avatar_url":"https://github.com/IonBazan.png","language":"PHP","readme":"# Composer Diff Plugin\n\n[![PHP 5.3+ | 7.x | 8.x](https://img.shields.io/badge/PHP-^5.3_|_^7_|_^8-blue.svg)](https://packagist.org/packages/ion-bazan/composer-diff)\n[![Composer v1 | v2](https://img.shields.io/badge/Composer-^1.1_|_^2-success.svg)](https://packagist.org/packages/ion-bazan/composer-diff)\n[![Dependencies: 0](https://img.shields.io/badge/dependencies-0-success.svg)](https://packagist.org/packages/ion-bazan/composer-diff)\n[![Latest version](https://img.shields.io/packagist/v/ion-bazan/composer-diff.svg)](https://packagist.org/packages/ion-bazan/composer-diff)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/IonBazan/composer-diff/test.yml)](https://github.com/IonBazan/composer-diff/actions)\n[![Codecov](https://img.shields.io/codecov/c/gh/IonBazan/composer-diff)](https://codecov.io/gh/IonBazan/composer-diff)\n[![Mutation testing badge](https://img.shields.io/endpoint?style=flat\u0026url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2FIonBazan%2Fcomposer-diff%2Fmaster)](https://dashboard.stryker-mutator.io/reports/github.com/IonBazan/composer-diff/master)\n[![Downloads](https://img.shields.io/packagist/dt/ion-bazan/composer-diff.svg)](https://packagist.org/packages/ion-bazan/composer-diff)\n[![License](https://img.shields.io/packagist/l/ion-bazan/composer-diff.svg)](https://packagist.org/packages/ion-bazan/composer-diff)\n\nGenerates packages changes report in Markdown format by comparing `composer.lock` files. Compares with last-committed changes by default.\n\n## Now available as [GitHub Action](https://github.com/marketplace/actions/composer-diff)!\n\n![preview](preview.png)\n\n# Installation\n\n```shell script\ncomposer global require ion-bazan/composer-diff\n```\n\n# Usage\n\n```shell script\ncomposer diff # Displays packages changed in current git tree compared with HEAD\ncomposer diff --help # Display detailed usage instructions\n```\n\n## Example output\n\n| Prod Packages                      | Operation | Base    | Target  |\n|------------------------------------|-----------|---------|---------|\n| psr/event-dispatcher               | New       | -       | 1.0.0   |\n| symfony/deprecation-contracts      | New       | -       | v2.1.2  |\n| symfony/event-dispatcher           | Upgraded  | v2.8.52 | v5.1.2  |\n| symfony/event-dispatcher-contracts | New       | -       | v2.1.2  |\n| symfony/polyfill-php80             | New       | -       | v1.17.1 |\n| php                                | New       | -       | \u003e=5.3   |\n\n| Dev Packages                       | Operation  | Base  | Target |\n|------------------------------------|------------|-------|--------|\n| phpunit/php-code-coverage          | Downgraded | 8.0.2 | 7.0.10 |\n| phpunit/php-file-iterator          | Downgraded | 3.0.2 | 2.0.2  |\n| phpunit/php-text-template          | Downgraded | 2.0.1 | 1.2.1  |\n| phpunit/php-timer                  | Downgraded | 5.0.0 | 2.1.2  |\n| phpunit/php-token-stream           | Downgraded | 4.0.2 | 3.1.1  |\n| phpunit/phpunit                    | Downgraded | 9.2.5 | 8.5.8  |\n| sebastian/code-unit-reverse-lookup | Downgraded | 2.0.1 | 1.0.1  |\n| sebastian/comparator               | Downgraded | 4.0.2 | 3.0.2  |\n| sebastian/diff                     | Downgraded | 4.0.1 | 3.0.2  |\n| sebastian/environment              | Downgraded | 5.1.1 | 4.2.3  |\n| sebastian/exporter                 | Downgraded | 4.0.1 | 3.1.2  |\n| sebastian/global-state             | Downgraded | 4.0.0 | 3.0.0  |\n| sebastian/object-enumerator        | Downgraded | 4.0.1 | 3.0.3  |\n| sebastian/object-reflector         | Downgraded | 2.0.1 | 1.1.1  |\n| sebastian/recursion-context        | Downgraded | 4.0.1 | 3.0.0  |\n| sebastian/resource-operations      | Downgraded | 3.0.1 | 2.0.1  |\n| sebastian/type                     | Downgraded | 2.1.0 | 1.1.3  |\n| sebastian/version                  | Downgraded | 3.0.0 | 2.0.1  |\n| phpunit/php-invoker                | Removed    | 3.0.1 | -      |\n| sebastian/code-unit                | Removed    | 1.0.3 | -      |\n\n## Options\n\n - `--base` (`-b`) - path, URL or git ref to original `composer.lock` file\n - `--target` (`-t`) - path, URL or git ref to modified `composer.lock` file\n - `--no-dev` - ignore dev dependencies (`require-dev`)\n - `--no-prod` - ignore prod dependencies (`require`)\n - `--with-platform` (`-p`) - include platform dependencies (PHP, extensions, etc.)\n - `--with-links` (`-l`) - include compare/release URLs\n - `--format` (`-f`) - output format (mdtable, mdlist, json, github) - default: `mdtable`\n - `--gitlab-domains` - custom gitlab domains for compare/release URLs - default: use composer config\n \n## Advanced usage\n\n```shell script\ncomposer diff master # Compare current composer.lock with the one on master branch\ncomposer diff master:composer.lock develop:composer.lock -p # Compare master and develop branches, including platform dependencies\ncomposer diff --no-dev # ignore dev dependencies\ncomposer diff -p # include platform dependencies\ncomposer diff -f json # Output as JSON instead of table\n```\n\nYou can find more documentation in the [docs](docs) directory.\n\n### Strict mode\n\nTo 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.\n\nExit code of the command is built using following bit flags:\n\n*  `0` - OK.\n*  `1` - General error.\n*  `2` - There were changes in prod packages.\n*  `4` - There were changes is dev packages.\n*  `8` - There were downgrades in prod packages.\n* `16` - There were downgrades in dev packages.\n\nYou 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.\n\n# Contributing\n\nComposer Diff is an open source project that welcomes pull requests and issues from anyone. \nBefore opening pull requests, please consider reading our short [Contribution Guidelines](docs/CONTRIBUTING.md).\n\n# Similar packages\n\nWhile there are several existing packages offering similar functionality:\n\n - [jbzoo/composer-diff](https://packagist.org/packages/jbzoo/composer-diff) - requires PHP 7.2+, no composer plugin support\n - [josefglatz/composer-diff-plugin](https://packagist.org/packages/josefglatz/composer-diff-plugin) - works only right after install/update\n - [davidrjonas/composer-lock-diff](https://packagist.org/packages/davidrjonas/composer-lock-diff) - does not work as composer plugin\n\nThis package offers:\n\n - Support for wide range of PHP versions, starting from 5.3.2 up to 8.0 and newer.\n - No dependencies if you run it as composer plugin.\n - Both standalone executable and composer plugin interface - you choose how you want to use it.\n - Allows generating reports in several formats.\n - Extra Gitlab domains support.\n - [GitHub Action](https://github.com/marketplace/actions/composer-diff) with example workflow\n - 100% test coverage.\n - MIT license.\n","funding_links":["https://github.com/sponsors/IonBazan"],"categories":["Plugins"],"sub_categories":["Support"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIonBazan%2Fcomposer-diff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIonBazan%2Fcomposer-diff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIonBazan%2Fcomposer-diff/lists"}