ergebnis/composer-normalize
Composer plugin that automatically normalizes composer.json formatting and ordering for consistent diffs and fewer review comments. Install as a dev dependency, allow the plugin, then run to enforce a standard structure across your project.
For a full diff see [2.9.0...2.9.1][2.9.0...2.9.1].
composer/composer:^1.10.17 and used composer/composer:1.10.17 for composer-normalize.phar ([#596]), by [@localheinz]composer/composer:^1.0.0 ([#597]), by [@localheinz]For a full diff see [2.8.2...2.9.0][2.8.2...2.9.0].
schema.json ([#572]), by [@ergebnis-bot]composer/composer:^1.10.15 and used composer/composer:1.10.15 for composer-normalize.phar ([#582]), by [@localheinz]For a full diff see [2.8.1...2.8.2][2.8.1...2.8.2].
composer/composer:^1.10.13 ([#554]), by [@localheinz]For a full diff see [2.8.0...2.8.1][2.8.0...2.8.1].
For a full diff see [2.7.0...2.8.0][2.7.0...2.8.0].
schema.json ([#526]), by [@ergebnis-bot]For a full diff see [2.6.1...2.7.0][2.6.1...2.7.0].
--no-check-lock option which allows skipping validation of composer.lock ([#515]), by [@localheinz]schema.json ([#512]), by [@ergebnis-bot]For a full diff see [2.6.0...2.6.1][2.6.0...2.6.1].
For a full diff see [2.5.2...2.6.0][2.5.2...2.6.0].
For a full diff see [2.49.0...2.50.0][2.49.0...2.50.0].
schema.json ([#1563]), by [@ergebnis-bot]For a full diff see [2.5.1...2.5.2][2.5.1...2.5.2].
For a full diff see [2.5.0...2.5.1][2.5.0...2.5.1].
Composer\Console\Application instead of reusing the current instance ([#420]), by [@localheinz]--no-suggest option when updating the lock file ([#422]), by [@localheinz]For a full diff see [2.4.0...2.5.0][2.4.0...2.5.0].
composer.json ([#416]), by [@localheinz]For a full diff see [2.48.2...2.49.0][2.48.2...2.49.0].
schema.json ([#1507]), by [@ergebnis-bot]composer/composer ([#1416]), by [@localheinz]For a full diff see [2.48.1...2.48.2][2.48.1...2.48.2].
For a full diff see [2.48.0...2.48.1][2.48.0...2.48.1].
For a full diff see [2.47.0...2.48.0][2.47.0...2.48.0].
schema.json ([#1454]), by [@ergebnis-bot]localheinz/diff ([#1493]), by [@andrey-helldar]For a full diff see [2.46.0...2.47.0][2.46.0...2.47.0].
schema.json ([#1441]), by [@ergebnis-bot]For a full diff see [2.45.0...2.46.0][2.45.0...2.46.0].
schema.json ([#1419]), by [@ergebnis-bot]ergerbnis/json-normalizer ([#1440]), by [@localheinz]For a full diff see [2.44.0...2.45.0][2.44.0...2.45.0].
schema.json ([#1405]), by [@ergebnis-bot]justinrainbow/json-schema:^6.0.0 ([#1410]), by [@tacman]composer/composer ([#1416]), by [@localheinz]For a full diff see [2.43.0...2.44.0][2.43.0...2.44.0].
schema.json ([#1363]), by [@ergebnis-bot]For a full diff see [2.42.0...2.43.0][2.42.0...2.43.0].
schema.json ([#1312]), by [@ergebnis-bot]composer/composer ([#1349]), by [@localheinz]For a full diff see [2.41.1...2.42.0][2.41.1...2.42.0].
ergebnis/json:^1.2.0 ([#1273]), by [@dependabot]ergebnis/json-printer:^3.5.0 ([#1275]), by [@dependabot]ergebnis/json-normalizer:^4.5.0 ([#1277]), by [@localheinz]For a full diff see [2.41.0...2.41.1][2.41.0...2.41.1].
ergebnis/json-normalizer:^4.4.1 ([#1243]), by [@dependabot]For a full diff see [2.40.0...2.41.0][2.40.0...2.41.0].
ergebnis/json-normalizer:^4.4.0 ([#1241]), by [@dependabot]composer/composer ([#1237]), by [@localheinz]For a full diff see [2.39.0...2.40.0][2.39.0...2.40.0].
schema.json ([#1204]), by [@ergebnis-bot]symfony/console:^7.0.0 ([#1234]), by [@localheinz]For a full diff see [2.3.2...2.4.0][2.3.2...2.4.0].
composer/composer:^2.0.0 ([#412]), by [@localheinz]For a full diff see [2.38.0...2.39.0][2.38.0...2.39.0].
ergebnis/json:^1.1.0 ([#1191]), by [@localheinz]ergebnis/json-normalizer:^4.3.0 ([#1192]), by [@localheinz]ergebnis/json-printer:^3.4.0 ([#1195]), by [@localheinz]For a full diff see [2.37.0...2.38.0][2.37.0...2.38.0].
Command\NormalizeCommand to respect --no-ansi, --no-plugins, --no-scripts options ([#1184]), by [@mxr576]composer/composer ([#1188]), by [@localheinz]For a full diff see [2.36.0...2.37.0][2.36.0...2.37.0].
schema.json ([#1170]), by [@ergebnis-bot]composer/composer ([#1171]), by [@localheinz]For a full diff see [2.35.0...2.36.0][2.35.0...2.36.0].
schema.json ([#1155]), by [@ergebnis-bot]composer/composer:2.6.1 for compiling composer-normalize.phar ([#1158]), by [@localheinz]For a full diff see [2.34.0...2.35.0][2.34.0...2.35.0].
--no-plugins and --no-scripts options ([#1141]), by [@mxr576]For a full diff see [2.33.0...2.34.0][2.33.0...2.34.0].
schema.json ([#1136]), by [@ergebnis-bot]For a full diff see [2.32.0...2.33.0][2.32.0...2.33.0].
ergebnis/json-normalizer:^4.2.0 ([#1127]), by [@dependabot]For a full diff see [2.31.0...2.32.0][2.31.0...2.32.0].
composer/composer:2.5.8 for compiling composer-normalize.phar ([#1125]), by [@localheinz]For a full diff see [2.30.2...2.31.0][2.30.2...2.31.0].
schema.json ([#1070]), by [@ergebnis-bot]ergebnis/json-normalizer:^4.1.0 ([#1095]), by [@dependabot]--no-ansi option to UpdateCommand ([#827]), by [@localheinz]composer/composer:2.5.5 for compiling composer-normalize.phar ([#1094]), by [@localheinz]For a full diff see [2.30.1...2.30.2][2.30.1...2.30.2].
ergebnis/json-normalizer:^4.0.2 ([#1062]), by [@localheinz]For a full diff see [2.30.0...2.30.1][2.30.0...2.30.1].
ergebnis/json-normalizer:^4.0.1 ([#1060]), by [@localheinz]For a full diff see [2.29.0...2.30.0][2.29.0...2.30.0].
Printer\Printer instead of Formatter\Formatter into NormalizeCommand ([#1008]), by [@ergebnis-bot]composer/composer:2.5.1 for compiling composer-normalize.phar ([#1020]), by [@localheinz]ergebnis/json-normalizer:^4.0.0 ([#1056]), by [@dependabot]For a full diff see [2.3.1...2.3.2][2.3.1...2.3.2].
For a full diff see [2.3.0...2.3.1][2.3.0...2.3.1].
composer/composer ([#379]), by [@localheinz]For a full diff see [2.2.4...2.3.0][2.2.4...2.3.0].
schema.json ([#374]), by [@ergebnis-bot]For a full diff see [2.28.3...2.29.0][2.28.3...2.29.0].
schema.json ([#959]), by [@ergebnis-bot]composer/composer:2.4.4 for compiling composer-normalize.phar ([#1004]), by [@localheinz]For a full diff see [2.28.2...2.28.3][2.28.2...2.28.3].
composer/composer:2.3.9 for compiling composer-normalize.phar ([#942]), by [@localheinz]For a full diff see [2.28.1...2.28.2][2.28.1...2.28.2].
composer/composer:2.3.8 for compiling composer-normalize.phar ([#941]), by [@localheinz]For a full diff see [2.28.0...2.28.1][2.28.0...2.28.1].
For a full diff see [2.27.0...2.28.0][2.27.0...2.28.0].
schema.json ([#933]), by [@ergebnis-bot]For a full diff see [2.26.0...2.27.0][2.26.0...2.27.0].
schema.json ([#930]), by [@ergebnis-bot]For a full diff see [2.25.2...2.26.0][2.25.2...2.26.0].
schema.json ([#923]), by [@ergebnis-bot]For a full diff see [2.25.1...2.25.2][2.25.1...2.25.2].
schema.json ([#916]), by [@ergebnis-bot]composer/composer:2.3.5 for compiling composer-normalize.phar ([#922]), by [@localheinz]justinrainbow/json-schema ([#920]), by [@dependabot]For a full diff see [2.25.0...2.25.1][2.25.0...2.25.1].
composer/composer:2.3.1 for compiling composer-normalize.phar ([#915]), by [@localheinz]For a full diff see [2.24.1...2.25.0][2.24.1...2.25.0].
schema.json ([#912]), by [@ergebnis-bot]composer/composer:2.3.0 for compiling composer-normalize.phar ([#913]), by [@localheinz]For a full diff see [2.24.0...2.24.1][2.24.0...2.24.1].
composer/composer:2.2.9 for compiling composer-normalize.phar ([#904]), by [@localheinz]humbug/box ([#905]), by [@localheinz]For a full diff see [2.23.1...2.24.0][2.23.1...2.24.0].
For a full diff see [2.23.0...2.23.1][2.23.0...2.23.1].
composer/composer:2.2.5 for compiling composer-normalize.phar ([#871]), by [@localheinz]ergebnis/json-normalizer beyond 2.1.0 for now ([#877]), by [@localheinz]For a full diff see [2.22.0...2.23.0][2.22.0...2.23.0].
ergebnis/json-normalizer ([#864]), by [@localheinz]composer/composer:2.2.3 for compiling composer-normalize.phar ([#863]), by [@localheinz]For a full diff see [2.21.0...2.22.0][2.21.0...2.22.0].
ergebnis/json-normalizer:^2.0.0 ([#858]), by [@dependabot]For a full diff see [2.20.0...2.21.0][2.20.0...2.21.0].
For a full diff see [2.19.0...2.20.0][2.19.0...2.20.0].
For a full diff see [2.2.3...2.2.4][2.2.3...2.2.4].
schema.json ([#364]), by [@localheinz]For a full diff see [2.2.2...2.2.3][2.2.2...2.2.3].
schema.json ([#354]), by [@ergebnis-bot]For a full diff see [2.2.1...2.2.2][2.2.1...2.2.2].
schema.json ([#322]), by [@localheinz]For a full diff see [2.2.0...2.2.1][2.2.0...2.2.1].
ergebnis/composer-json-normalizer ([#316]), by [@localheinz]For a full diff see [2.1.2...2.2.0][2.1.2...2.2.0].
--diff option ([#303]), by [@localheinz]For a full diff see [2.18.0...2.19.0][2.18.0...2.19.0].
composer/composer:2.2.1 for compiling composer-normalize.phar ([#842]), by [@localheinz]For a full diff see [2.17.0...2.18.0][2.17.0...2.18.0].
schema.json ([#829]), by [@ergebnis-bot]For a full diff see [2.16.0...2.17.0][2.16.0...2.17.0].
schema.json ([#816]), by [@ergebnis-bot]composer/composer:2.1.14 for compiling composer-normalize.phar ([#825]), by [@localheinz]For a full diff see [2.15.0...2.16.0][2.15.0...2.16.0].
composer/composer:2.1.12 for compiling composer-normalize.phar ([#804]), by [@localheinz]composer/composer:^1.0.0 ([#807]), by [@localheinz]For a full diff see [2.14.0...2.15.0][2.14.0...2.15.0].
schema.json ([#754]), by [@ergebnis-bot]For a full diff see [2.13.4...2.14.0][2.13.4...2.14.0].
schema.json ([#744]), by [@ergebnis-bot]composer/composer ([#750]), by [@localheinz]For a full diff see [2.13.3...2.13.4][2.13.3...2.13.4].
composer/composer:2.0.13 for compiling composer-normalize.phar ([#743]), by [@localheinz]For a full diff see [2.13.2...2.13.3][2.13.2...2.13.3].
ergebnis/json-normalizer:^1.0.3 which correctly sorts composer-plugin-api ([#707]), by [@dependabot]For a full diff see [2.13.1...2.13.2][2.13.1...2.13.2].
ergebnis/json-normalizer:^1.0.2 which ignores the config.preferred-install hash only instead of all properties with the name preferred-install ([#647]), by [@localheinz]For a full diff see [2.13.0...2.13.1][2.13.0...2.13.1].
:clown_face: Made a mistake tagging this release *before- pulling changes merged into main.
For a full diff see [2.12.2...2.13.0][2.12.2...2.13.0].
composer/composer:^1.0.0 ([#644]), by [@localheinz]For a full diff see [2.12.1...2.12.2][2.12.1...2.12.2].
ergebnis/json-normalizer:^1.0.1 which ignores the preferred-install hash when sorting configuration hashes by key ([#646]), by [@dependabot]For a full diff see [2.12.0...2.12.1][2.12.0...2.12.1].
Composer\Console\Application when running as development dependency ([#643]), by [@localheinz]For a full diff see [2.11.0...2.12.0][2.11.0...2.12.0].
composer normalize ([#641]), by [@localheinz]ergebnis/json-normalizer:^1.0.0 which allows recursively sorting config hashes ([#634]), by [@dependabot]composer/composer:2.0.8 for composer-normalize.phar ([#640]), by [@localheinz]For a full diff see [2.10.0...2.11.0][2.10.0...2.11.0].
schema.json ([#615]), by [@ergebnis-bot]For a full diff see [2.9.1...2.10.0][2.9.1...2.10.0].
For a full diff see [2.1.1...2.1.2][2.1.1...2.1.2].
For a full diff see [2.1.0...2.1.1][2.1.0...2.1.1].
composer validate to show validation errors when composer.json is not valid according to its schema ([#297]), by [@localheinz]For a full diff see [2.0.2...2.1.0][2.0.2...2.1.0].
composer-normalize.phar and composer-normalize.phar.asc to release assets when a tag is pushed ([#292]), by [@localheinz]For a full diff see [2.0.1...2.0.2][2.0.1...2.0.2].
For a full diff see [2.0.0...2.0.1][2.0.0...2.0.1]
For a full diff see [1.3.1...2.0.0][1.3.1...2.0.0].
For a full diff see [1.3.0...1.3.1][1.3.0...1.3.1].
localheinz/diff to avoid issues using sebastian/diff ([#207]), by [@localheinz]For a full diff see [1.2.0...1.3.0][1.2.0...1.3.0].
For a full diff see [1.1.4...1.2.0][1.1.4...1.2.0].
StrictUnifiedDiffOutputBuilder when available to create more condensed diffs when using the --dry-run option ([#80]), by [@localheinz]For a full diff see [1.1.3...1.1.4][1.1.3...1.1.4].
composer.json to be writable when using the --dry-run option ([#177]), by [@localheinz]For a full diff see [1.1.2...1.1.3][1.1.2...1.1.3].
--dry-run option ([#173]), by [@TravisCarden]For a full diff see [1.1.1...1.1.2][1.1.1...1.1.2].
file argument of the NormalizeCommand as it turns out that the same functionality can not be achieved using the --working-dir option ([#166]), by [@localheinz]For a full diff see [1.1.0...1.1.1][1.1.0...1.1.1].
localheinz/composer-json-normalizer, which effectively removed a dependency on composer/composer ([#157]), by [@localheinz]For a full diff see [1.0.0...1.1.0][1.0.0...1.1.0].
file argument of the NormalizeCommand as the same functionality can be achieved using the --working-dir option ([#145]), by [@localheinz]composer.json and composer.lock after normalization to ensure composer.lock is updated when not fresh after normalization ([#139]), by [@localheinz]For a full diff see [0.9.0...1.0.0][0.9.0...1.0.0].
localheinz/composer-json-normalizer ([#106]), by [@localheinz]For a full diff see [0.8.0...0.9.0][0.8.0...0.9.0].
ConfigHashNormalizer now also sorts the scripts-descriptions section ([#89]), by [@localheinz]composer.lock fails prior to normalization, it is now recommended to update the lock file only ([#86]), by [@svenluijten]For a full diff see [0.7.0...0.8.0][0.7.0...0.8.0].
ConfigHashNormalizer now also sorts the extra section ([#60]), by [@localheinz]For a full diff see [0.6.0...0.7.0][0.6.0...0.7.0].
localheinz/json-normalizer, which now sniffs the new-line character and uses it for printing instead of using PHP_EOL ([#62]), by [@localheinz]For a full diff see [0.5.0...0.6.0][0.5.0...0.6.0].
file argument to the NormalizeCommand, so the path to composer.json can be specified now, ([#51]), by [@localheinz]For a full diff see [0.4.0...0.5.0][0.4.0...0.5.0].
localheinz/json-normalizer, which significantly improves the SchemaNormalizer employed to do the major normalization of composer.json ([#42]), by [@localheinz]For a full diff see [0.3.0...0.4.0][0.3.0...0.4.0].
--dry-run option, which allows usage in Continuous Integration systems, as it renders a diff and exits with a non-zero exit code ([#38]), by [@localheinz]For a full diff see [0.2.0...0.3.0][0.2.0...0.3.0].
For a full diff see [0.1.0...0.2.0][0.1.0...0.2.0].
--no-update-lock option, which allows skipping the update of composer.lock after normalization ([#28]), by [@localheinz]VersionConstraintNormalizer, which normalizes version constraints ([#18]), by [@localheinz]--no-scripts option when invoking the UpdateCommand to update composer.lock ([#19]), by [@localheinz]For a full diff see 81bc3a8...0.1.0.
NormalizeCommand (#1), by [@localheinz]ConfigHashNormalizer, which sorts entries in the config section by key (#2), by [@localheinz]NormalizePlugin, which provides the NormalizeCommand (#3), by [@localheinz]PackageHashNormalizer which sorts packages in the conflict, provide, replaces, require, require-dev, and suggest sections using the same algorithm that is used by the sort-packages option of composer itself (#6), by [@localheinz]BinNormalizer, which sorts entries in the bin section byComposerJsonNormalizer, which composes all of the above normalizers along with the SchemaNormalizer, to normalize composer.json according to its underlying JSON schema (#8 and #10), by [@localheinz][@AlexSkrypnyk]: https://github.com/AlexSkrypnyk [@andrey-helldar]: https://github.com/andrey-helldar [@core23]: https://github.com/core23 [@dependabot]: https://github.com/dependabot [@ergebnis-bot]: https://github.com/ergebnis-bot [@ergebnis]: https://github.com/ergebnis [@localheinz]: https://github.com/localheinz [@mxr576]: https://github.com/mxr576 [@ruudk]: https://github.com/ruudk [@svenluijten]: https://github.com/svenluijten [@tacman]: https://github.com/tacman [@TravisCarden]: https://github.com/TravisCarden
Started using ergebnis/composer-json-normalizer instead of localheinz/composer-json-normalizer, ergebnis/json-normalizer instead of localheinz/json-normalizer, and ergebnis/json-printer instead of localheinz/json-printer ([#261]), by [@localheinz]
Removed default values for parameters $formatter and $differ of constructor of Ergebnis\Composer\Normalize\Command\NormalizeCommand ([#262]), by [@localheinz]
Renamed vendor namespace Localheinz to Ergebnis after move to [@ergebnis] ([#267]), by [@localheinz]
Run
$ composer remove localheinz/composer-normalize
and
$ composer require ergebnis/composer-normalize
to update.
Run
$ find . -type f -exec sed -i '.bak' 's/Localheinz\\Composer\\Normalizer/Ergebnis\\Composer\\Normalize/g' {} \;
to replace occurrences of Localheinz\Composer\Normalize with Ergebnis\Composer\Normalize.
Run
$ find -type f -name '*.bak' -delete
to delete backup files created in the previous step.
Marked Ergebnis\Composer\Normalize\Command\NormalizeCommand and Ergebnis\Composer\Normalize\Command\SchemaUriResolver as internal to allow modifications without the need for major releases ([#270]), by [@localheinz]
How can I help you explore Laravel packages today?