localheinz / composer-normalize
Requires
- php: ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
- composer-plugin-api: ^2.0.0
- ext-json: *
- ergebnis/json: ^1.2.0
- ergebnis/json-normalizer: ^4.5.0
- ergebnis/json-printer: ^3.5.0
- justinrainbow/json-schema: ^5.2.12
- localheinz/diff: ^1.1.1
Requires (Dev)
- composer/composer: ^2.7.7
- ergebnis/license: ^2.4.0
- ergebnis/php-cs-fixer-config: ^6.30.1
- ergebnis/phpunit-slow-test-detector: ^2.14.0
- fakerphp/faker: ^1.23.1
- infection/infection: ~0.26.6
- phpunit/phpunit: ^9.6.19
- psalm/plugin-phpunit: ~0.19.0
- rector/rector: ^1.1.0
- symfony/filesystem: ^5.4.40
- vimeo/psalm: ^5.24.0
- dev-main
- 2.43.0
- 2.42.0
- 2.41.1
- 2.41.0
- 2.40.0
- 2.39.0
- 2.38.0
- 2.37.0
- 2.36.0
- 2.35.0
- 2.34.0
- 2.33.0
- 2.32.0
- 2.31.0
- 2.30.2
- 2.30.1
- 2.30.0
- 2.29.0
- 2.28.3
- 2.28.2
- 2.28.1
- 2.28.0
- 2.27.0
- 2.26.0
- 2.25.2
- 2.25.1
- 2.25.0
- 2.24.1
- 2.24.0
- 2.23.1
- 2.23.0
- 2.22.0
- 2.21.0
- 2.20.0
- 2.19.0
- 2.18.0
- 2.17.0
- 2.16.0
- 2.15.0
- 2.14.0
- 2.13.4
- 2.13.3
- 2.13.2
- 2.13.1
- 2.13.0
- 2.12.2
- 2.12.1
- 2.12.0
- 2.11.0
- 2.10.0
- 2.9.1
- 2.9.0
- 2.8.2
- 2.8.1
- 2.8.0
- 2.7.1
- 2.7.0
- 2.6.1
- 2.6.0
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- 0.9.0
- 0.8.0
- 0.7.0
- 0.6.0
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.0
- dev-feature/schema
This package is auto-updated.
Last update: 2024-09-19 09:07:01 UTC
README
本项目提供composer
用于规范化composer.json
的插件。
原因
在格式化 composer.json
时,你有以下选择
- 你可以手动格式化(并在贡献者格式化不同时请求更改)
- 你也可以不再关心
- 或者你可以使用
ergebnis/composer-normalize
ergebnis/composer-normalize
会规范化 composer.json
,所以你不必这么做。
安装
Composer
运行
composer require --dev ergebnis/composer-normalize
以将 ergebnis/composer-normalize
作为 composer 插件安装。
运行
composer config allow-plugins.ergebnis/composer-normalize true
允许 ergebnis/composer-normalize
作为 composer 插件运行。
💡 已经将 allow-plugins
添加到 composer/composer
中以增加额外的安全层。
参考
Phar
访问 http://github.com/ergebnis/composer-normalize/releases/latest 并下载最新的 composer-normalize.phar
。
运行
chmod +x composer-normalize.phar
以使下载的 composer-normalize.phar
可执行。
Phive
运行
phive install ergebnis/composer-normalize
使用 PHIVE 安装 ergebnis/composer-normalize
。
用法
Composer
运行
composer normalize
以规范化工作目录中的 composer.json
。
Phar
运行
./composer-normalize.phar
以规范化工作目录中的 composer.json
。
Phive
运行
./tools/composer-normalize
以规范化工作目录中的 composer.json
。
详细信息
此包中 NormalizePlugin
提供的 NormalizeCommand
将执行以下操作:
- 确定是否存在
composer.json
- 确定是否存在
composer.lock
,如果存在,则检查其是否最新(除非使用了--no-check-lock
选项) - 使用
Ergebnis\Json\Normalizer\Vendor\Composer\ComposerJsonNormalizer
规范化composer.json
的内容 - 格式化规范化后的内容(要么作为嗅探结果,要么使用
--indent-size
和--indent-style
选项指定的格式) - 将规范化并格式化后的
composer.json
内容写回文件 - 如果存在且需要更新,则更新
composer.lock
中的哈希值
参数
file
:composer.json
文件路径(可选,默认为工作目录中的composer.json
)
选项
--diff
: 显示规范化的结果--dry-run
: 显示规范化的结果,但不修改任何文件--indent-size
: 缩进大小(大于 0 的整数);应与--indent-style
选项一起使用--indent-style
: 缩进风格("space" 或 "tab" 之一);应与--indent-size
选项一起使用--no-check-lock
: 不要检查锁文件是否最新--no-update-lock
: 如果存在则不要更新锁文件
作为指定 --indent-size
和 --indent-style
选项的替代方案,您也可以使用 composer extra 在 composer.json
中配置这些选项
{ "extra": { "composer-normalize": { "indent-size": 2, "indent-style": "space" } } }
💡 composer extra 中提供的配置始终覆盖通过命令行选项提供的配置。
持续集成
如果您想在持续集成服务中运行此操作,请使用 --dry-run
选项。
composer normalize --dry-run
如果 composer.json
未规范化(或 composer.lock
未更新),命令将失败并显示退出代码为 1
的 diff。
示例
pestphp/pest
运行
composer normalize
针对 https://github.com/pestphp/pest/blob/v0.3.19/composer.json 产生的以下 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
运行
composer normalize
针对 https://github.com/phpspec/phpspec/blob/7.0.1/composer.json 产生的以下 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
运行
composer normalize
针对 https://github.com/sebastianbergmann/phpunit/blob/9.5.0/composer.json 产生的以下 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" } }
变更日志
该项目的维护者记录了这个项目的显著更改到一个 变更日志 中。
贡献
该项目的维护者建议遵循 贡献指南。
行为准则
该项目的维护者要求贡献者遵循 行为准则。
一般支持政策
该项目的维护者提供有限的支持。
您可以通过 赞助 @localheinz 或 请求与此项目相关的服务发票 来支持该项目的维护。
PHP 版本支持政策
此项目支持具有 活动和安全支持 的 PHP 版本。
该项目的维护者在 PHP 版本首次发布后添加对其的支持,并在其达到安全支持结束时停止对其的支持。
安全策略
此项目有一个 安全策略。
许可证
此项目使用 MIT 许可证。
社交
关注 Twitter 上的 @localheinz 和 @ergebnis。