kubawerlos / composer-json-fixer
A tool for fixing and cleaning up `composer.json` file according to its schema and best practices.
Installs: 10 858
Dependents: 0
Suggesters: 0
Security: 0
Stars: 16
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/kubawerlos/composer-json-fixer
Requires
- php: ^7.1
- ext-json: *
- ext-mbstring: *
- sebastian/diff: ^1 || ^2 || ^3
- symfony/console: ^2.7 || ^3 || ^4
- symfony/filesystem: ^2.7 || ^3 || ^4
- symfony/finder: ^2.7 || ^3 || ^4
- symfony/process: ^2.7 || ^3 || ^4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12
- kubawerlos/types-checker: ^1.1
- mikey179/vfsstream: ^1.6
- phpstan/phpstan: ^0.10.0
- phpstan/phpstan-strict-rules: ^0.10.0
- phpunit/phpunit: ^7.2
- squizlabs/php_codesniffer: ^3.3
- symfony/yaml: ^4.1
- vimeo/psalm: ^2.0
README
A tool for fixing and cleaning up composer.json file
according to its schema and best practices.
Installation
composer.json fixer can be installed globally:
composer global require kubawerlos/composer-json-fixer
or as a dependency (e.g. to include into CI process):
composer require --dev kubawerlos/composer-json-fixer
Usage
Run and fix:
vendor/bin/composer-json-fixer
See diff of potential fixes:
vendor/bin/composer-json-fixer --dry-run
Upgrade dependencies with composer require:
vendor/bin/composer-json-fixer --upgrade
Fixers
- composer keys lowercase - changes names of properties to lowercase
- autoload - fixes paths and sorts
autoloadandautoload-dev - config - sorts
configby key - keywords - sorts
keywordsby value - license - adds
licenseif it is missing - minimum stability - removes
minimum-stabilityif it has default value ("stable") - name - makes package name lowercase
- repositories - sorts
repositories - require - cleans up versions for
requireandrequire-dev - version - removes
versionif it is present - composer keys sorting - sorts properties according to the documentation
Example
Before running composer-json-fixer:
{
"name": "JohnDoe/FooBar",
"version": "v1.0.0",
"type": "library",
"description": "A library to do something cool",
"keywords": [
"cool",
"awesome stuff"
],
"require-dev": {
"phpunit/phpunit": "^5.7 | ^6.5"
},
"require": {
"symfony/finder": "^2.7|^3.4|^4",
"symfony/yaml": ">= 2.7"
},
"minimum-stability": "stable",
"autoload": {
"psr-4": {
"FooBar": "src"
}
}
}
After:
{
"name": "johndoe/foobar",
"description": "A library to do something cool",
"type": "library",
"keywords": [
"awesome stuff",
"cool"
],
"license": "proprietary",
"require": {
"symfony/finder": "^2.7 || ^3.4 || ^4",
"symfony/yaml": ">=2.7"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.5"
},
"autoload": {
"psr-4": {
"FooBar\\": "src/"
}
}
}
Exit status
0-composer.jsonfile does not require fixing,1-composer.jsonfile can be, or was fixed,2- exception was thrown.
Contributing
Request a feature or report a bug by creating issue.
Alternatively, fork the repo, develop your changes, regenerate README.md:
src/Readme/run > README.md
make sure all checks pass:
composer check
and submit a pull request.