table of content
# downgrade or upgrade composer
composer self-update --1 # downgrade to version 1
composer self-update --rollback # rollback to version 2
composer self-update 1.10.12 # downgrade to specific version
composer self-update 2.0.7 # upgrade to specific version
# Understand versions
Name | Exampe | Description |
---|---|---|
specific | 1.0.2 | specify the exact version |
range | >=1.0; >1.0, <2.0 | specify the range of versions |
widlcard | 3.4.* | specify a pattern with a * wildcard |
tilde | ~1.2 | specify semantic version, is equivalent to >=1.2, <2.0 |
# Composer Commands
# reuqire: the most used command
composer require zebra/zebra
# require global
composer require global zebra/zebra
composer require global zebra/zebra:2.1.0
# show all packages name from your project
composer show
# remove package
composer remove phpoffice/phpspreadsheet
# install packages from lock file
composer install
# update packages for the lastest version
composer update -vvv
composer update zebra/zebra -vvv
composer global update zebra/zebra -vvv
# install packages for the stable versions
composer update --prefer-stable -vvv
# validate the composer.json with composer.lock
composer validate
# do partial updates work
composer update --dry-run zebar/zebra --with-dependencies
# Autoloader optimization
composer install --optimize-autoloader
# Composer.json & composer.lock
composer.lock
add always composer.lock to git
in a application. Without committing the composer.lock
, you won't get the exact the same set of dependencies.
sort packages
It is best to configure the sorting
in composer.json
, to keep the packages in require
and require-dev
sorted by name.
"config": {
"sort-packages": true
}
validate the `composer.json`
composer.json and composer.lock should be always kept in sync.
composer validate --no-check-all --strict
specify the production PHP version
Just specify the production PHP version in config section of composer.json
"config": {
"platform": {
"php": "7.1"
}
}
speed up the package installation
Install composer plugin hirak/prestissimo
which speeds up by downloading them in parallel.
composer global require hirak/prestissimo
# Favorite global packages
composer global require friendsofphp/php-cs-fixer
composer global require squizlabs/php_codesniffer
# How to upgrade
upgrade or reinstall composer CLI
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar composer
chmod +x composer
rm -rf /usr/local/bin/composer
mv composer /usr/local/bin
# update via symfony
symfony composer self-update