Stars: 933
Forks: 30
Pull Requests: 1090
Issues: 80
Watchers: 12
Last Updated: 2023-09-15 10:13:05
:musical_note: Provides a composer plugin for normalizing composer.json.
License: MIT License
Languages: PHP, Makefile
This package provides a composer
plugin for normalizing composer.json
.
When it comes to formatting composer.json
, you have the following options:
ergebnis/composer-normalize
ergebnis/composer-normalize
normalizes composer.json
, so you don't have to.
💡 If you want to find out more, take a look at the examples and read this blog post.
Run
composer require --dev ergebnis/composer-normalize
to install ergebnis/composer-normalize
as a composer plugin.
Run
composer config allow-plugins.ergebnis/composer-normalize true
to allow ergebnis/composer-normalize
to run as a composer plugin.
💡 The allow-plugins
has been added to composer/composer
to add an extra layer of security.
For reference, see
Head over to http://github.com/ergebnis/composer-normalize/releases/latest and download the latest composer-normalize.phar
.
Run
chmod +x composer-normalize.phar
to make the downloaded composer-normalize.phar
executable.
Run
phive install ergebnis/composer-normalize
to install ergebnis/composer-normalize
with PHIVE.
Run
composer normalize
to normalize composer.json
in the working directory.
Run
./composer-normalize.phar
to normalize composer.json
in the working directory.
Run
./tools/composer-normalize
to normalize composer.json
in the working directory.
The NormalizeCommand
provided by the NormalizePlugin
within this package will
composer.json
existscomposer.lock
exists, and if so, whether it is up to date (unless the --no-check-lock
option is used)Ergebnis\Json\Normalizer\Vendor\Composer\ComposerJsonNormalizer
to normalize the content of composer.json
--indent-size
and --indent-style
options)composer.json
back to the filecomposer.lock
if it exists and if an update is necessaryfile
: Path to composer.json
file (optional, defaults to composer.json
in working directory)--diff
: Show the results of normalizing--dry-run
: Show the results of normalizing, but do not modify any files--indent-size
: Indent size (an integer greater than 0); should be used with the --indent-style
option--indent-style
: Indent style (one of "space", "tab"); should be used with the --indent-size
option--no-check-lock
: Do not check if lock file is up to date--no-update-lock
: Do not update lock file if it existsAs an alternative to specifying the --indent-size
and --indent-style
options, you can also use composer extra to configure these options in composer.json
:
{
"extra": {
"composer-normalize": {
"indent-size": 2,
"indent-style": "space"
}
}
}
💡 The configuration provided in composer extra always overrides the configuration provided via command line options.
If you want to run this in continuous integration services, use the --dry-run
option.
composer normalize --dry-run
In case composer.json
is not normalized (or composer.lock
is not up-to-date), the command will
fail with an exit code of 1
and show a diff.
pestphp/pest
Running
composer normalize
against https://github.com/pestphp/pest/blob/v0.3.19/composer.json yields the following diff:
diff --git a/composer.json b/composer.json
index 1cfbf1e..204f20f 100644
--- a/composer.json
+++ b/composer.json
@@ -25,6 +25,32 @@
"pestphp/pest-plugin-init": "^0.3",
"phpunit/phpunit": ">= 9.3.7 <= 9.5.0"
},
+ "require-dev": {
+ "illuminate/console": "^7.16.1",
+ "illuminate/support": "^7.16.1",
+ "laravel/dusk": "^6.9.1",
+ "mockery/mockery": "^1.4.1",
+ "pestphp/pest-dev-tools": "dev-master"
+ },
+ "config": {
+ "preferred-install": "dist",
+ "sort-packages": true
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.3.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Pest\\Laravel\\PestServiceProvider"
+ ]
+ },
+ "pest": {
+ "plugins": [
+ "Pest\\Plugins\\Version"
+ ]
+ }
+ },
"autoload": {
"psr-4": {
"Pest\\": "src/"
@@ -42,49 +68,23 @@
"tests/Autoload.php"
]
},
- "require-dev": {
- "illuminate/console": "^7.16.1",
- "illuminate/support": "^7.16.1",
- "laravel/dusk": "^6.9.1",
- "mockery/mockery": "^1.4.1",
- "pestphp/pest-dev-tools": "dev-master"
- },
"minimum-stability": "dev",
"prefer-stable": true,
- "config": {
- "sort-packages": true,
- "preferred-install": "dist"
- },
"bin": [
"bin/pest"
],
"scripts": {
"lint": "php-cs-fixer fix -v",
- "test:lint": "php-cs-fixer fix -v --dry-run",
- "test:types": "phpstan analyse --ansi --memory-limit=0",
- "test:unit": "php bin/pest --colors=always --exclude-group=integration",
- "test:integration": "php bin/pest --colors=always --group=integration",
- "update:snapshots": "REBUILD_SNAPSHOTS=true php bin/pest --colors=always",
"test": [
"@test:lint",
"@test:types",
"@test:unit",
"@test:integration"
- ]
- },
- "extra": {
- "branch-alias": {
- "dev-master": "0.3.x-dev"
- },
- "pest": {
- "plugins": [
- "Pest\\Plugins\\Version"
- ]
- },
- "laravel": {
- "providers": [
- "Pest\\Laravel\\PestServiceProvider"
- ]
- }
+ ],
+ "test:integration": "php bin/pest --colors=always --group=integration",
+ "test:lint": "php-cs-fixer fix -v --dry-run",
+ "test:types": "phpstan analyse --ansi --memory-limit=0",
+ "test:unit": "php bin/pest --colors=always --exclude-group=integration",
+ "update:snapshots": "REBUILD_SNAPSHOTS=true php bin/pest --colors=always"
}
}
phpspec/phpspec
Running
composer normalize
against https://github.com/phpspec/phpspec/blob/7.0.1/composer.json yields the following diff:
diff --git a/composer.json b/composer.json
index 90150a37..276a2ecd 100644
--- a/composer.json
+++ b/composer.json
@@ -1,72 +1,73 @@
{
- "name": "phpspec/phpspec",
- "description": "Specification-oriented BDD framework for PHP 7.1+",
- "keywords": ["BDD", "SpecBDD", "TDD", "spec", "specification", "tests", "testing"],
- "homepage": "http://phpspec.net/",
- "type": "library",
- "license": "MIT",
- "authors": [
+ "name": "phpspec/phpspec",
+ "type": "library",
+ "description": "Specification-oriented BDD framework for PHP 7.1+",
+ "keywords": [
+ "BDD",
+ "SpecBDD",
+ "TDD",
+ "spec",
+ "specification",
+ "tests",
+ "testing"
+ ],
+ "homepage": "http://phpspec.net/",
+ "license": "MIT",
+ "authors": [
{
- "name": "Konstantin Kudryashov",
- "email": "[email protected]",
- "homepage": "http://everzet.com"
+ "name": "Konstantin Kudryashov",
+ "email": "[email protected]",
+ "homepage": "http://everzet.com"
},
{
- "name": "Marcello Duarte",
- "homepage": "http://marcelloduarte.net/"
+ "name": "Marcello Duarte",
+ "homepage": "http://marcelloduarte.net/"
},
{
- "name": "Ciaran McNulty",
- "homepage": "https://ciaranmcnulty.com/"
+ "name": "Ciaran McNulty",
+ "homepage": "https://ciaranmcnulty.com/"
}
],
-
"require": {
- "php": "^7.3 || 8.0.*",
- "phpspec/prophecy": "^1.9",
- "phpspec/php-diff": "^1.0.0",
- "sebastian/exporter": "^3.0 || ^4.0",
- "symfony/console": "^3.4 || ^4.4 || ^5.0",
+ "php": "^7.3 || 8.0.*",
+ "ext-tokenizer": "*",
+ "doctrine/instantiator": "^1.0.5",
+ "phpspec/php-diff": "^1.0.0",
+ "phpspec/prophecy": "^1.9",
+ "sebastian/exporter": "^3.0 || ^4.0",
+ "symfony/console": "^3.4 || ^4.4 || ^5.0",
"symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.0",
- "symfony/process": "^3.4 || ^4.4 || ^5.0",
- "symfony/finder": "^3.4 || ^4.4 || ^5.0",
- "symfony/yaml": "^3.4 || ^4.4 || ^5.0",
- "doctrine/instantiator": "^1.0.5",
- "ext-tokenizer": "*"
+ "symfony/finder": "^3.4 || ^4.4 || ^5.0",
+ "symfony/process": "^3.4 || ^4.4 || ^5.0",
+ "symfony/yaml": "^3.4 || ^4.4 || ^5.0"
+ },
+ "conflict": {
+ "sebastian/comparator": "<1.2.4"
},
-
"require-dev": {
- "behat/behat": "^3.3",
- "symfony/filesystem": "^3.4 || ^4.0 || ^5.0",
- "phpunit/phpunit": "^8.0 || ^9.0"
+ "behat/behat": "^3.3",
+ "phpunit/phpunit": "^8.0 || ^9.0",
+ "symfony/filesystem": "^3.4 || ^4.0 || ^5.0"
},
-
"suggest": {
"phpspec/nyan-formatters": "Adds Nyan formatters"
},
-
- "conflict": {
- "sebastian/comparator" : "<1.2.4"
+ "extra": {
+ "branch-alias": {
+ "dev-main": "7.0.x-dev"
+ }
},
-
"autoload": {
"psr-0": {
"PhpSpec": "src/"
}
},
-
"autoload-dev": {
"psr-0": {
"spec\\PhpSpec": "."
}
},
-
- "bin": ["bin/phpspec"],
-
- "extra": {
- "branch-alias": {
- "dev-main": "7.0.x-dev"
- }
- }
-
+ "bin": [
+ "bin/phpspec"
+ ]
}
phpunit/phpunit
Running
composer normalize
against https://github.com/sebastianbergmann/phpunit/blob/9.5.0/composer.json yields the following diff:
diff --git a/composer.json b/composer.json
index fd6461fc3..23c3a3596 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"name": "phpunit/phpunit",
- "description": "The PHP Unit Testing framework.",
"type": "library",
+ "description": "The PHP Unit Testing framework.",
"keywords": [
"phpunit",
"xunit",
@@ -16,10 +16,6 @@
"role": "lead"
}
],
- "support": {
- "issues": "https://github.com/sebastianbergmann/phpunit/issues"
- },
- "prefer-stable": true,
"require": {
"php": ">=7.3",
"ext-dom": "*",
@@ -54,20 +50,22 @@
"ext-PDO": "*",
"phpspec/prophecy-phpunit": "^2.0.1"
},
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
"config": {
+ "optimize-autoloader": true,
"platform": {
"php": "7.3.0"
},
- "optimize-autoloader": true,
"sort-packages": true
},
- "suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
},
- "bin": [
- "phpunit"
- ],
"autoload": {
"classmap": [
"src/"
@@ -86,9 +84,11 @@
"tests/_files/NamespaceCoveredFunction.php"
]
},
- "extra": {
- "branch-alias": {
- "dev-master": "9.5-dev"
- }
+ "prefer-stable": true,
+ "bin": [
+ "phpunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues"
}
}
The maintainers of this package record notable changes to this project in a changelog.
The maintainers of this package suggest following the contribution guide.
The maintainers of this package ask contributors to follow the code of conduct.
The maintainers of this package provide limited support.
You can support the maintenance of this package by sponsoring @localheinz or requesting an invoice for services related to this package.
This package supports PHP versions with active support.
The maintainers of this package add support for a PHP version following its initial release and drop support for a PHP version when it has reached its end of active support.
This package has a security policy.
This package uses the MIT license.
Follow @localheinz and @ergebnis on Twitter.