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-normalizeergebnis/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-normalizeto install ergebnis/composer-normalize as a composer plugin.
Run
composer config allow-plugins.ergebnis/composer-normalize trueto 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.pharto make the downloaded composer-normalize.phar executable.
Run
phive install ergebnis/composer-normalizeto install ergebnis/composer-normalize with PHIVE.
Run
composer normalizeto normalize composer.json in the working directory.
Run
./composer-normalize.pharto normalize composer.json in the working directory.
Run
./tools/composer-normalizeto 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-runIn 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/pestRunning
composer normalizeagainst 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/phpspecRunning
composer normalizeagainst 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/phpunitRunning
composer normalizeagainst 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.