localheinz/composer-json-normalizer
Provides normalizers for normalizing composer.json.
Requires
- php: ^7.1
- localheinz/json-normalizer: ~0.9.0
Requires (Dev)
- infection/infection: ~0.11.4
- localheinz/php-cs-fixer-config: ~1.19.0
- localheinz/phpstan-rules: ~0.5.0
- localheinz/test-util: ~0.7.0
- phpstan/phpstan: ~0.10.7
- phpstan/phpstan-deprecation-rules: ~0.10.2
- phpstan/phpstan-strict-rules: ~0.10.1
- phpunit/phpunit: ^7.5.1
README
Provides normalizers for normalizing composer.json
.
Installation
Run
$ composer require localheinz/composer-json-normalizer
Usage
Create an instance of Localheinz\Composer\Json\Normalizer\ComposerJsonNormalizer
and use it to normalize the contents of a composer.json
:
<?php use Localheinz\Composer\Json\Normalizer\ComposerJsonNormalizer; use Localheinz\Json\Normalizer\Json; $normalizer = new ComposerJsonNormalizer(); $json = Json::fromEncoded(file_get_contents(__DIR__ . '/composer.json')); $normalized = $normalizer->normalize($json); echo $normalized->encoded();
💡 Looking for the composer plugin? Head over to localheinz/composer-normalize
.
Normalizers
The ComposerJsonNormalizer
composes normalizers provided by localheinz/json-normalizer
:
as well as the following normalizers provided by this package:
Localheinz\Composer\Json\Normalizer\BinNormalizer
Localheinz\Composer\Json\Normalizer\ConfigHashNormalizer
Localheinz\Composer\Json\Normalizer\PackageHashNormalizer
Localheinz\Composer\Json\Normalizer\VersionConstraintNormalizer
BinNormalizer
If composer.json
contains an array of scripts in the bin
section,
the BinNormalizer
will sort the elements of the bin
section by value in ascending order.
💡 Find out more about the bin
section at https://getcomposer.org/doc/04-schema.md#bin.
ConfigHashNormalizer
If composer.json
contains any configuration in the
config
extra
scripts-descriptions
sections, the ConfigHashNormalizer
will sort the content of these sections
by key in ascending order.
💡 Find out more about the config
section at https://getcomposer.org/doc/06-config.md.
PackageHashNormalizer
If composer.json
contains any configuration in the
conflict
provide
replace
require
require-dev
suggest
sections, the PackageHashNormalizer
will sort the content of these sections.
💡 This transfers the behaviour from using the --sort-packages
or
sort-packages
configuration flag to other sections. Find out more about
the --sort-packages
flag and configuration at https://getcomposer.org/doc/06-config.md#sort-packages
and https://getcomposer.org/doc/03-cli.md#require.
VersionConstraintNormalizer
If composer.json
contains version constraints in the
conflict
provide
replace
require
require-dev
sections, the VersionConstraintNormalizer
will ensure that
- all constraints are trimmed
- and constraints are separated by a single space (
,
) - or constraints are separated by double-pipe with a single space before and after (
||
) - range constraints are separated by a single space (
💡 Find out more about version constraints at https://getcomposer.org/doc/articles/versions.md.
Changelog
Please have a look at CHANGELOG.md
.
Contributing
Please have a look at CONTRIBUTING.md
.
Code of Conduct
Please have a look at CODE_OF_CONDUCT.md
.
License
This package is licensed using the MIT License.
Credits
The algorithm for sorting packages in the PackageHashNormalizer
has
been adopted from Composer\Json\JsonManipulator::sortPackages()
(originally licensed under MIT by Nils Adermann and Jordi Boggiano),
which I initially contributed to composer/composer
with composer/composer#3549
and composer/composer#3872
.