composer-lock-diff
composer-lock-diff copied to clipboard
Separate tables for changes in direct and indirect dependencies
When having huge dependency lists, separate tables for direct and indirect dependencies are helpful - you see which changes were desired, and which ones came only automatically.
Having direct prod+dev changes first eases seeing wanted changes.
Builds upon https://github.com/davidrjonas/composer-lock-diff/pull/41 Resolves: https://github.com/davidrjonas/composer-lock-diff/issues/37
Short example
$ composer-lock-diff --no-links
+------------------------------------+-------------+-----------------------+
| Production Changes | From | To |
+------------------------------------+-------------+-----------------------+
| andersundsehr/aus-driver-amazon-s3 | 1.12.1 | 1.13.1 |
| felixnagel/generic-gallery | 4.3.0 | 5.2.0 |
| fluidtypo3/flux | 9.7.2 | 9.7.4 |
+------------------------------------+-------------+-----------------------+
+-------------------+---------+---------+
| Dev Changes | From | To |
+-------------------+---------+---------+
| mogic/mogic-phpcs | d81fefd | 0eb8337 |
+-------------------+---------+---------+
+------------------------------------+---------+---------+
| Indirect Production Changes | From | To |
+------------------------------------+---------+---------+
| aws/aws-crt-php | v1.0.2 | v1.2.7 |
| aws/aws-sdk-php | 3.255.7 | 3.331.0 |
| beberlei/assert | v3.3.2 | v3.3.3 |
| clue/stream-filter | v1.6.0 | v1.7.0 |
+------------------------------------+---------+---------+
+----------------------+---------+---------+
| Indirect Dev Changes | From | To |
+----------------------+---------+---------+
| phpstan/phpstan | 1.12.10 | 1.12.11 |
+----------------------+---------+---------+
Long example
Real world
$ composer-lock-diff --no-links
+------------------------------------+-------------+-----------------------+
| Production Changes | From | To |
+------------------------------------+-------------+-----------------------+
| andersundsehr/aus-driver-amazon-s3 | 1.12.1 | 1.13.1 |
| felixnagel/generic-gallery | 4.3.0 | 5.2.0 |
| fluidtypo3/flux | 9.7.2 | 9.7.4 |
| fluidtypo3/vhs | 6.1.2 | 6.1.3 |
| helhum/typo3-console | v6.7.6 | v7.1.6 |
| jigal/t3adminer | 10.0.1 | 12.1.0 |
| mogic/t3x-nh2020 | dev-develop | dev-SRH-1440-typo3v11 |
| mogic/t3x-srh | dev-develop | dev-SRH-1440-typo3v11 |
| mogic/t3x-srh-service | dev-develop | dev-SRH-1440-typo3v11 |
| ssch/typo3-encore | v5.0.2 | v5.0.7 |
| symfony/webpack-encore-bundle | v1.16.0 | v1.17.2 |
| tomasnorre/crawler | 11.0.7 | 11.0.10 |
| typo3/cms-backend | v10.4.37 | v11.5.41 |
| typo3/cms-belog | v10.4.37 | v11.5.41 |
| typo3/cms-beuser | v10.4.37 | v11.5.41 |
| typo3/cms-core | v10.4.37 | v11.5.41 |
| typo3/cms-extbase | v10.4.37 | v11.5.41 |
| typo3/cms-extensionmanager | v10.4.37 | v11.5.41 |
| typo3/cms-felogin | v10.4.37 | v11.5.41 |
| typo3/cms-filelist | v10.4.37 | v11.5.41 |
| typo3/cms-filemetadata | v10.4.37 | v11.5.41 |
| typo3/cms-fluid | v10.4.37 | v11.5.41 |
| typo3/cms-fluid-styled-content | v10.4.37 | v11.5.41 |
| typo3/cms-form | v10.4.37 | v11.5.41 |
| typo3/cms-frontend | v10.4.37 | v11.5.41 |
| typo3/cms-impexp | v10.4.37 | v11.5.41 |
| typo3/cms-indexed-search | v10.4.37 | v11.5.41 |
| typo3/cms-info | v10.4.37 | v11.5.41 |
| typo3/cms-install | v10.4.37 | v11.5.41 |
| typo3/cms-lowlevel | v10.4.37 | v11.5.41 |
| typo3/cms-recordlist | v10.4.37 | v11.5.41 |
| typo3/cms-redirects | v10.4.37 | v11.5.41 |
| typo3/cms-rte-ckeditor | v10.4.37 | v11.5.41 |
| typo3/cms-scheduler | v10.4.37 | v11.5.41 |
| typo3/cms-seo | v10.4.37 | v11.5.41 |
| typo3/cms-setup | v10.4.37 | v11.5.41 |
| typo3/cms-sys-note | v10.4.37 | v11.5.41 |
| typo3/cms-t3editor | v10.4.37 | v11.5.41 |
| typo3/cms-tstemplate | v10.4.37 | v11.5.41 |
| typo3/cms-viewpage | v10.4.37 | v11.5.41 |
| typo3/cms-workspaces | v10.4.37 | v11.5.41 |
+------------------------------------+-------------+-----------------------+
+-------------------+---------+---------+
| Dev Changes | From | To |
+-------------------+---------+---------+
| mogic/mogic-phpcs | d81fefd | 0eb8337 |
+-------------------+---------+---------+
+------------------------------------+---------+---------+
| Indirect Production Changes | From | To |
+------------------------------------+---------+---------+
| aws/aws-crt-php | v1.0.2 | v1.2.7 |
| aws/aws-sdk-php | 3.255.7 | 3.331.0 |
| beberlei/assert | v3.3.2 | v3.3.3 |
| clue/stream-filter | v1.6.0 | v1.7.0 |
| composer/semver | 3.3.2 | 3.4.3 |
| doctrine/annotations | 1.14.3 | 1.14.4 |
| doctrine/deprecations | v1.1.1 | 1.1.3 |
| egulias/email-validator | 2.1.25 | 3.2.6 |
| enshrined/svg-sanitize | 0.15.4 | 0.18.0 |
| guzzlehttp/guzzle | 6.5.8 | 7.9.2 |
| guzzlehttp/promises | 1.5.3 | 2.0.4 |
| guzzlehttp/psr7 | 1.9.1 | 2.7.0 |
| jean85/pretty-package-versions | 2.0.5 | 2.1.0 |
| lolli42/finediff | 1.0.2 | 1.0.4 |
| masterminds/html5 | 2.8.0 | 2.9.0 |
| mtdowling/jmespath.php | 2.6.1 | 2.8.0 |
| php-http/client-common | 2.6.0 | 2.7.2 |
| php-http/discovery | 1.14.3 | 1.20.0 |
| php-http/httplug | 2.3.0 | 2.4.1 |
| php-http/message | 1.13.0 | 1.16.2 |
| php-http/message-factory | v1.0.2 | 1.1.0 |
| php-http/promise | 1.1.0 | 1.3.1 |
| phpdocumentor/reflection-docblock | 5.3.0 | 5.6.0 |
| phpdocumentor/type-resolver | 1.7.2 | 1.10.0 |
| phpstan/phpdoc-parser | 1.23.0 | 1.33.0 |
| psr/http-client | 1.0.2 | 1.0.3 |
| psr/http-factory | 1.0.2 | 1.1.0 |
| sentry/sdk | 3.3.0 | 3.6.0 |
| sentry/sentry | 3.12.0 | 3.22.1 |
| symfony/asset | v5.4.13 | v5.4.45 |
| symfony/cache | v5.4.25 | v5.4.46 |
| symfony/cache-contracts | v2.5.2 | v2.5.4 |
| symfony/config | v5.4.21 | v5.4.46 |
| symfony/dependency-injection | v5.4.25 | v5.4.48 |
| symfony/deprecation-contracts | v2.5.3 | v2.5.4 |
| symfony/error-handler | v5.4.17 | v5.4.46 |
| symfony/event-dispatcher | v5.4.22 | v5.4.45 |
| symfony/event-dispatcher-contracts | v2.5.2 | v2.5.4 |
| symfony/expression-language | v5.4.21 | v5.4.45 |
| symfony/http-client | v5.4.17 | v5.4.48 |
| symfony/http-client-contracts | v2.5.2 | v2.5.4 |
| symfony/http-foundation | v5.4.25 | v5.4.48 |
| symfony/http-kernel | v5.4.18 | v5.4.48 |
| symfony/mailer | v5.4.22 | v5.4.45 |
| symfony/mime | v5.4.23 | v5.4.45 |
| symfony/options-resolver | v5.4.11 | v5.4.45 |
| symfony/polyfill-intl-icu | v1.27.0 | v1.31.0 |
| symfony/polyfill-intl-idn | v1.27.0 | v1.31.0 |
| symfony/polyfill-php72 | v1.27.0 | REMOVED |
| symfony/property-access | v5.4.22 | v5.4.45 |
| symfony/property-info | v5.4.24 | v5.4.48 |
| symfony/routing | v5.4.25 | v5.4.48 |
| symfony/service-contracts | v2.5.3 | v2.5.4 |
| symfony/var-dumper | v5.4.17 | v5.4.48 |
| symfony/var-exporter | v5.4.21 | v5.4.45 |
| symfony/web-link | v5.4.3 | v5.4.45 |
| typo3/class-alias-loader | v1.1.4 | v1.2.0 |
| typo3/cms-cli | 2.0.0 | 3.1.2 |
| typo3/cms-composer-installers | v3.1.3 | v3.1.4 |
| typo3/html-sanitizer | v2.1.1 | v2.2.0 |
| bacon/bacon-qr-code | NEW | 2.0.8 |
| christian-riesen/base32 | NEW | 1.6.0 |
| dasprid/enum | NEW | 1.0.6 |
| helhum/php-error-reporting | NEW | v1.0.1 |
| symfony/lock | NEW | v5.4.45 |
| symfony/polyfill-php83 | NEW | v1.31.0 |
| symfony/rate-limiter | NEW | v5.4.47 |
+------------------------------------+---------+---------+
+----------------------+---------+---------+
| Indirect Dev Changes | From | To |
+----------------------+---------+---------+
| phpstan/phpstan | 1.12.10 | 1.12.11 |
+----------------------+---------+---------+
Another production example:
$ composer-lock-diff --no-links --md
| Production Changes | From | To |
|--------------------|---------|--------|
| fluidtypo3/flux | 10.0.10 | 10.1.0 |
| Indirect Production Changes | From | To |
|-----------------------------------|---------|---------|
| aws/aws-sdk-php | 3.331.0 | 3.334.4 |
| doctrine/deprecations | 1.1.3 | 1.1.4 |
| firebase/php-jwt | v6.10.0 | v6.10.2 |
| lolli42/finediff | 1.0.4 | 1.1.1 |
| phpdocumentor/reflection-docblock | 5.6.0 | 5.6.1 |
| psr/cache | 1.0.1 | 3.0.0 |
| psr/link | 1.0.0 | 2.0.1 |
| symfony/asset | v5.4.45 | v6.4.13 |
| symfony/cache | v5.4.46 | v6.4.16 |
| symfony/cache-contracts | v2.5.4 | v3.5.1 |
| symfony/deprecation-contracts | v2.5.4 | v3.5.1 |
| symfony/error-handler | v5.4.46 | v6.3.12 |
| symfony/event-dispatcher | v5.4.45 | v6.4.13 |
| symfony/http-client | v5.4.48 | v6.2.13 |
| symfony/http-client-contracts | v2.5.4 | v3.5.2 |
| symfony/http-kernel | v5.4.48 | v6.0.20 |
| symfony/lock | v5.4.45 | v6.4.13 |
| symfony/process | v5.4.47 | v6.4.15 |
| symfony/string | v5.4.47 | v6.4.15 |
| symfony/var-dumper | v5.4.48 | v6.4.15 |
| symfony/var-exporter | v5.4.45 | v7.2.0 |
| symfony/web-link | v5.4.45 | v6.4.13 |
| typo3/phar-stream-wrapper | v3.1.7 | v3.1.8 |
| typo3fluid/fluid | 2.7.4 | 2.15.0 |
| Indirect Dev Changes | From | To |
|-------------------------|---------|---------|
| league/flysystem | 2.5.0 | 3.29.1 |
| league/flysystem-memory | 2.0.6 | 3.29.0 |
| nette/utils | v3.2.10 | v4.0.5 |
| phpstan/phpstan | 1.12.11 | 1.12.12 |
| league/flysystem-local | NEW | 3.29.0 |
@davidrjonas I really like this to be added. What is holding this back? Can I help to make this complete?
I've rebased against latest master. I'm using this since a year and it is working fine.