{"id":21823544,"url":"https://github.com/jbzoo/composer-diff","last_synced_at":"2025-04-13T06:40:25.287Z","repository":{"id":38184501,"uuid":"276969163","full_name":"JBZoo/Composer-Diff","owner":"JBZoo","description":"See what packages have changed after `composer update` ","archived":false,"fork":false,"pushed_at":"2024-02-08T21:20:23.000Z","size":1097,"stargazers_count":48,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-26T04:03:25.493Z","etag":null,"topics":["composer","composer-diff","composer-json","composer-lock","composer-lock-diff","composer-packages","jbzoo","json","php"],"latest_commit_sha":null,"homepage":"","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/JBZoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2020-07-03T19:01:26.000Z","updated_at":"2024-06-18T21:34:00.203Z","dependencies_parsed_at":"2024-02-08T22:40:59.731Z","dependency_job_id":"7cdfe4b1-39ee-42bd-b721-d9c5886b6864","html_url":"https://github.com/JBZoo/Composer-Diff","commit_stats":{"total_commits":61,"total_committers":4,"mean_commits":15.25,"dds":0.5901639344262295,"last_synced_commit":"0180686981b3c31e21befc2ccbe4cd0cfb2e4b89"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":"JBZoo/Skeleton-PHP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBZoo%2FComposer-Diff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBZoo%2FComposer-Diff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBZoo%2FComposer-Diff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBZoo%2FComposer-Diff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JBZoo","download_url":"https://codeload.github.com/JBZoo/Composer-Diff/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248675434,"owners_count":21143763,"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-json","composer-lock","composer-lock-diff","composer-packages","jbzoo","json","php"],"created_at":"2024-11-27T17:33:17.874Z","updated_at":"2025-04-13T06:40:25.267Z","avatar_url":"https://github.com/JBZoo.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JBZoo / Composer-Diff\n\n[![CI](https://github.com/JBZoo/Composer-Diff/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/JBZoo/Composer-Diff/actions/workflows/main.yml?query=branch%3Amaster)    [![Coverage Status](https://coveralls.io/repos/github/JBZoo/Composer-Diff/badge.svg?branch=master)](https://coveralls.io/github/JBZoo/Composer-Diff?branch=master)    [![Psalm Coverage](https://shepherd.dev/github/JBZoo/Composer-Diff/coverage.svg)](https://shepherd.dev/github/JBZoo/Composer-Diff)    [![Psalm Level](https://shepherd.dev/github/JBZoo/Composer-Diff/level.svg)](https://shepherd.dev/github/JBZoo/Composer-Diff)    [![CodeFactor](https://www.codefactor.io/repository/github/jbzoo/composer-diff/badge)](https://www.codefactor.io/repository/github/jbzoo/composer-diff/issues)    \n[![Stable Version](https://poser.pugx.org/jbzoo/composer-diff/version)](https://packagist.org/packages/jbzoo/composer-diff/)    [![Total Downloads](https://poser.pugx.org/jbzoo/composer-diff/downloads)](https://packagist.org/packages/jbzoo/composer-diff/stats)    [![Dependents](https://poser.pugx.org/jbzoo/composer-diff/dependents)](https://packagist.org/packages/jbzoo/composer-diff/dependents?order_by=downloads)    [![GitHub License](https://img.shields.io/github/license/jbzoo/composer-diff)](https://github.com/JBZoo/Composer-Diff/blob/master/LICENSE)\n\n\n\u003c!--ts--\u003e\n   * [Why?](#why)\n   * [Installation](#installation)\n   * [Usage](#usage)\n   * [Help Description](#help-description)\n   * [Output Examples](#output-examples)\n      * [Default view (--output=console)](#default-view---outputconsole)\n      * [Markdown Output (--output=markdown)](#markdown-output---outputmarkdown)\n      * [JSON Output (--output=json)](#json-output---outputjson)\n   * [Roadmap](#roadmap)\n   * [Unit tests and check code style](#unit-tests-and-check-code-style)\n   * [License](#license)\n   * [See Also](#see-also)\n\u003c!--te--\u003e\n\n\n## Why?\n\nSee what packages have been changed after you run `composer update` by comparing `composer.lock` to the `git show HEAD:composer.lock`.\n\n\n## Installation\n\n```shell\ncomposer require        jbzoo/composer-diff # For specific project\ncomposer global require jbzoo/composer-diff # As global tool\n\n# OR use phar file.\nwget https://github.com/JBZoo/Composer-Diff/releases/latest/download/composer-diff.phar\n```\n\n## Usage\n\n```bash\ncomposer update\n\n# if it's installed via composer\nphp ./vendor/bin/composer-diff\n\n# OR (if installed globally)\ncomposer-diff\n\n# OR (if you downloaded phar file)\nphp composer-diff.phar\n```\n\n\n## Help Description\n```\n./vendor/bin/composer-diff --help\n\nDescription:\n  Show difference between two versions of composer.lock files\n\nUsage:\n  diff [options]\n\nOptions:\n      --source=SOURCE            The file, git ref, or git ref with filename to compare FROM [default: \"HEAD:composer.lock\"]\n      --target=TARGET            The file, git ref, or git ref with filename to compare TO [default: \"./composer.lock\"]\n      --env=ENV                  Show only selected environment. Available options: both, require, require-dev [default: \"both\"]\n      --output=OUTPUT            Output format. Available options: console, markdown, json [default: \"console\"]\n      --no-links                 Hide all links in tables\n      --strict                   Return exit code if you have any difference\n      --no-progress              Disable progress bar animation for logs. It will be used only for text output format.\n      --mute-errors              Mute any sort of errors. So exit code will be always \"0\" (if it's possible).\n                                 It has major priority then --non-zero-on-error. It's on your own risk!\n      --stdout-only              For any errors messages application will use StdOut instead of StdErr. It's on your own risk!\n      --non-zero-on-error        None-zero exit code on any StdErr message.\n      --timestamp                Show timestamp at the beginning of each message.It will be used only for text output format.\n      --profile                  Display timing and memory usage information.\n      --output-mode=OUTPUT-MODE  Output format. Available options:\n                                 text - Default text output format, userfriendly and easy to read.\n                                 cron - Shortcut for crontab. It's basically focused on human-readable logs output.\n                                 It's combination of --timestamp --profile --stdout-only --no-progress -vv.\n                                 logstash - Logstash output format, for integration with ELK stack.\n                                  [default: \"text\"]\n      --cron                     Alias for --output-mode=cron. Deprecated!\n  -h, --help                     Display help for the given command. When no command is given display help for the diff command\n  -q, --quiet                    Do not output any message\n  -V, --version                  Display this application version\n      --ansi|--no-ansi           Force (or disable --no-ansi) ANSI output\n  -n, --no-interaction           Do not ask any interactive question\n  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug\n```\n\n\n## Output Examples\n\n### Default view (--output=console)\n\n\n\n```\nPHP Production Dependencies (require)\n+-------------------+------------+--------------------+---------------------+---------------------------------------------------------------+\n| Package           | Action     |        Old Version |         New Version | Details                                                       |\n+-------------------+------------+--------------------+---------------------+---------------------------------------------------------------+\n| vendor/downgraded | Downgraded |              2.0.0 |               1.0.0 | https://gitlab.com/vendor/downgraded/compare/2.0.0...1.0.0    |\n| vendor/new        | New        |                  - |               1.0.0 |                                                               |\n| vendor/no-tag     | Changed    | dev-master@bbc0fba |  dev-master@f2f9280 | https://gitlab.com/vendor/package-1/compare/bbc0fba...f2f9280 |\n| vendor/no-tag-new | New        |                  - | dev-develop@a999014 |                                                               |\n| vendor/removed    | Removed    |              1.0.0 |                   - |                                                               |\n| vendor/upgraded   | Upgraded   |              1.0.0 |               2.0.0 | https://gitlab.com/vendor/upgraded/compare/1.0.0...2.0.0      |\n+-------------------+------------+--------------------+---------------------+---------------------------------------------------------------+\n```\n\nRendered in your terminal:\n![Dummy example](https://raw.githubusercontent.com/JBZoo/Composer-Diff/master/resources/dummy.png)\n\nAlso, see [colored example in travis-ci](https://travis-ci.org/github/JBZoo/Composer-Diff/jobs/705031632#L414)\n![Real project](https://raw.githubusercontent.com/JBZoo/Composer-Diff/master/resources/drupal.png)\n\n\n\n### Markdown Output (--output=markdown)\n\nSource code:\n```markdown\n## PHP Production Dependencies (require)\n\n| Package                                                    | Action     |        Old Version |         New Version |                                                                              |\n|:-----------------------------------------------------------|:-----------|-------------------:|--------------------:|:-----------------------------------------------------------------------------|\n| [vendor/downgraded](https://gitlab.com/vendor/downgraded)  | Downgraded |              2.0.0 |               1.0.0 | [See details](https://gitlab.com/vendor/downgraded/compare/2.0.0...1.0.0)    |\n| [vendor/new](https://gitlab.com/vendor/new)                | New        |                  - |               1.0.0 |                                                                              |\n| [vendor/no-tag](https://gitlab.com/vendor/package-1)       | Changed    | dev-master@bbc0fba |  dev-master@f2f9280 | [See details](https://gitlab.com/vendor/package-1/compare/bbc0fba...f2f9280) |\n| [vendor/no-tag-new](https://gitlab.com/vendor-1/package-1) | New        |                  - | dev-develop@a999014 |                                                                              |\n| [vendor/removed](https://gitlab.com/vendor/removed)        | Removed    |              1.0.0 |                   - |                                                                              |\n| [vendor/upgraded](https://gitlab.com/vendor/upgraded)      | Upgraded   |              1.0.0 |               2.0.0 | [See details](https://gitlab.com/vendor/upgraded/compare/1.0.0...2.0.0)      |\n```\n\nRendered in your readme or PR/MR description:\n\n| Package                                                    | Action     |        Old Version |         New Version |                                                                              |\n|:-----------------------------------------------------------|:-----------|-------------------:|--------------------:|:-----------------------------------------------------------------------------|\n| [vendor/downgraded](https://gitlab.com/vendor/downgraded)  | Downgraded |              2.0.0 |               1.0.0 | [See details](https://gitlab.com/vendor/downgraded/compare/2.0.0...1.0.0)    |\n| [vendor/new](https://gitlab.com/vendor/new)                | New        |                  - |               1.0.0 |                                                                              |\n| [vendor/no-tag](https://gitlab.com/vendor/package-1)       | Changed    | dev-master@bbc0fba |  dev-master@f2f9280 | [See details](https://gitlab.com/vendor/package-1/compare/bbc0fba...f2f9280) |\n| [vendor/no-tag-new](https://gitlab.com/vendor-1/package-1) | New        |                  - | dev-develop@a999014 |                                                                              |\n| [vendor/removed](https://gitlab.com/vendor/removed)        | Removed    |              1.0.0 |                   - |                                                                              |\n| [vendor/upgraded](https://gitlab.com/vendor/upgraded)      | Upgraded   |              1.0.0 |               2.0.0 | [See details](https://gitlab.com/vendor/upgraded/compare/1.0.0...2.0.0)      |\n\n\n\n### JSON Output (--output=json)\n\n```json\n{\n    \"require\": {\n        \"vendor\\/downgraded\": {\n            \"name\": \"vendor\\/downgraded\",\n            \"url\": \"https:\\/\\/gitlab.com\\/vendor\\/downgraded\",\n            \"version_from\": \"2.0.0\",\n            \"version_to\": \"1.0.0\",\n            \"mode\": \"Downgraded\",\n            \"compare\": \"https:\\/\\/gitlab.com\\/vendor\\/downgraded\\/compare\\/2.0.0...1.0.0\"\n        },\n        \"vendor\\/new\": {\n            \"name\": \"vendor\\/new\",\n            \"url\": \"https:\\/\\/gitlab.com\\/vendor\\/new\",\n            \"version_from\": null,\n            \"version_to\": \"1.0.0\",\n            \"mode\": \"New\",\n            \"compare\": null\n        },\n        \"vendor\\/no-tag\": {\n            \"name\": \"vendor\\/no-tag\",\n            \"url\": \"https:\\/\\/gitlab.com\\/vendor\\/package-1\",\n            \"version_from\": \"dev-master@bbc0fba\",\n            \"version_to\": \"dev-master@f2f9280\",\n            \"mode\": \"Changed\",\n            \"compare\": \"https:\\/\\/gitlab.com\\/vendor\\/package-1\\/compare\\/bbc0fba...f2f9280\"\n        },\n        \"vendor\\/no-tag-new\": {\n            \"name\": \"vendor\\/no-tag-new\",\n            \"url\": \"https:\\/\\/gitlab.com\\/vendor-1\\/package-1\",\n            \"version_from\": null,\n            \"version_to\": \"dev-develop@a999014\",\n            \"mode\": \"New\",\n            \"compare\": null\n        },\n        \"vendor\\/removed\": {\n            \"name\": \"vendor\\/removed\",\n            \"url\": \"https:\\/\\/gitlab.com\\/vendor\\/removed\",\n            \"version_from\": \"1.0.0\",\n            \"version_to\": null,\n            \"mode\": \"Removed\",\n            \"compare\": null\n        },\n        \"vendor\\/upgraded\": {\n            \"name\": \"vendor\\/upgraded\",\n            \"url\": \"https:\\/\\/gitlab.com\\/vendor\\/upgraded\",\n            \"version_from\": \"1.0.0\",\n            \"version_to\": \"2.0.0\",\n            \"mode\": \"Upgraded\",\n            \"compare\": \"https:\\/\\/gitlab.com\\/vendor\\/upgraded\\/compare\\/1.0.0...2.0.0\"\n        }\n    }\n}\n```\n\n\n## Roadmap\n\n * [ ] Supporting Drupal repos. [For example](https://git.drupalcode.org/project/fast_404).\n * [ ] Add action in the composer via API like `composer lock-diff`.\n * [ ] Fixes [the same issue](https://github.com/davidrjonas/composer-lock-diff/issues/26) with complex/custom name of tag.\n * [ ] Auto-detecting alias name of branch.\n * [ ] No warp links for Markdown format.\n * [ ] (?) Support MS Windows... \n\n\n## Unit tests and check code style\n```sh\nmake build\nmake test-all\n```\n\n\n## License\n\nMIT\n\n\n## See Also\n\n- [CI-Report-Converter](https://github.com/JBZoo/CI-Report-Converter) - Converting different error reports for deep compatibility with popular CI systems.\n- [Composer-Graph](https://github.com/JBZoo/Composer-Graph) - Dependency graph visualization of composer.json based on mermaid-js.\n- [Mermaid-PHP](https://github.com/JBZoo/Mermaid-PHP) - Generate diagrams and flowcharts with the help of the mermaid script language.\n- [Utils](https://github.com/JBZoo/Utils) - Collection of useful PHP functions, mini-classes, and snippets for every day.\n- [Image](https://github.com/JBZoo/Image) - Package provides object-oriented way to manipulate with images as simple as possible.\n- [Data](https://github.com/JBZoo/Data) - Extended implementation of ArrayObject. Use files as config/array. \n- [Retry](https://github.com/JBZoo/Retry) - Tiny PHP library providing retry/backoff functionality with multiple backoff strategies and jitter support.\n- [SimpleTypes](https://github.com/JBZoo/SimpleTypes) - Converting any values and measures - money, weight, exchange rates, length, ...\n\nSpecial thanks to the project [davidrjonas/composer-lock-diff](https://github.com/davidrjonas/composer-lock-diff) which inspired me to make a great utility :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbzoo%2Fcomposer-diff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbzoo%2Fcomposer-diff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbzoo%2Fcomposer-diff/lists"}