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
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
autoload
andautoload-dev
- config - sorts
config
by key - keywords - sorts
keywords
by value - license - adds
license
if it is missing - minimum stability - removes
minimum-stability
if it has default value ("stable") - name - makes package name lowercase
- repositories - sorts
repositories
- require - cleans up versions for
require
andrequire-dev
- version - removes
version
if 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.json
file does not require fixing,1
-composer.json
file 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.