jnbn/composer-json-fixer

A tool for fixing and cleaning up `composer.json` file according to its schema and best practices.

3.0.1 2020-12-05 11:42 UTC

This package is auto-updated.

Last update: 2024-11-05 20:49:30 UTC


README

Latest Stable Version PHP Version License Build Status Code coverage

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 jnbn/composer-json-fixer

or as a dependency (e.g. to include into CI process):

composer require --dev jnbn/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 and autoload-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 and require-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.