name: The name of the package. It consists of vendor name and project name, separated by /
description: A short description of the package. Usually this is just one line long
keywords: An array of keywords that the package is related to. These can be used for searching and filtering
license: The license of the package
type: The type of the package, Package types are used for custom installation logic.
project: This denotes a project rather than a library. For example application shells like the Symfony
require: Lists packages required by this package
require-dev: Lists packages required for developing this package, or running tests, etc. The dev requirements of the root package are installed by default
autoload: Autoload mapping for a PHP autoloader.
Currently PSR-0 autoloading, PSR-4 autoloading, classmap generation and files includes are supported.
PSR-4: Under the psr-4 key you define a mapping from namespaces to paths, relative to the package root. Namespace prefixes must end in \
Classmap:The classmap references are all combined, during install/update, into a single key => value array which may be found in the generated file vendor/composer/autoload_classmap.php
autoload-dev: This section allows to define autoload rules for development purposes
Classes needed to run the test suite should not be included in the main autoload rules to avoid polluting the autoloader in production and when other people use your package as a dependency
scripts: Composer allows you to hook into various parts of the installation process through the use of scripts
post-root-package-install: occurs after the root package has been installed, during the create-project command
post-create-project-cmd: occurs after the create-project command has been executed
post-install-cmd: occurs after the install command has been executed with a lock file present
post-update-cmd: occurs after the update command has been executed, or after the install command has been executed without a lock file present
config: A set of configuration options. It is only used for projects
preferred-install: This option allows you to set the install method Composer will prefer to use