ergebnis / composer-json-normalizer
Provides normalizers for normalizing composer.json.
Installs: 107 964
Dependents: 0
Suggesters: 0
Security: 0
Stars: 21
Watchers: 1
Forks: 1
Open Issues: 1
Requires
- php: ^7.1
- ext-json: *
- ergebnis/json-normalizer: ~0.10.1
- justinrainbow/json-schema: ^4.0.0 || ^5.0.0
Requires (Dev)
- ergebnis/php-cs-fixer-config: ~1.1.2
- ergebnis/phpstan-rules: ~0.14.2
- ergebnis/test-util: ~0.9.1
- infection/infection: ~0.13.6
- jangregor/phpstan-prophecy: ~0.5.0
- phpstan/extension-installer: ^1.0.3
- phpstan/phpstan: ~0.11.19
- phpstan/phpstan-deprecation-rules: ~0.11.2
- phpstan/phpstan-strict-rules: ~0.11.1
- phpunit/phpunit: ^7.5.18
This package is auto-updated.
Last update: 2020-01-09 13:59:08 UTC
README
Provides normalizers for normalizing composer.json
.
Installation
Run
$ composer require ergebnis/composer-json-normalizer
Usage
Create an instance of Ergebnis\Composer\Json\Normalizer\ComposerJsonNormalizer
and use it to normalize the contents of a composer.json
:
<?php use Ergebnis\Composer\Json\Normalizer\ComposerJsonNormalizer; use Ergebnis\Json\Normalizer\Json; $normalizer = new ComposerJsonNormalizer('https://getcomposer.org/schema.json'); $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:
Ergebnis\Composer\Json\Normalizer\BinNormalizer
Ergebnis\Composer\Json\Normalizer\ConfigHashNormalizer
Ergebnis\Composer\Json\Normalizer\PackageHashNormalizer
Ergebnis\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
.