Passionate Free Software Developer
   https://github.com/naderman
phpBB Development Lead
  https://www.phpbb.com
Co-Founder of 
  https://www.forumatic.com
  Professional Managed phpBB Hosting
 
            allows you to set defaults for config options in all your projects
*nix: /home/example/.composer/config.json
OSX: /Users/example/.composer/config.json
Windows: C:\Users\example\AppData\Roaming\Composer\config.json
Create install requests for the requirements
(on update:) Force update installed dev packages to latest
Load lock file as a repository
Create install requests for all its packages
$ composer show --platform
                
            
$ composer show --installed
                
            
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/nelmio/NelmioSecretBundle"
        },
        {
            "type": "vcs",
            "url": "https://github.com/nelmio/lib"
        }
    ],
    "require": {
        "nelmio/secret-bundle": "1.*",
        "nelmio/lib": "1.5.3"
    }
}
            
        satis.json
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/nelmio/NelmioSecretBundle"
        },
        {
            "type": "vcs",
            "url": "https://github.com/nelmio/lib"
        }
    ]
}
            
            
composer create-project composer/satis myrepo
cd myrepo
bin/satis build satis.json www/
            
        composer.json
{
    "repositories": [
        {
            "type": "composer",
            "url": "https://satis.example.org/"
        }
    ],
    "require": {
        "nelmio/secret-bundle": "1.*",
        "nelmio/lib": "1.5.3"
    }
}
            
        satis.json
{
    "repositories": [
        {
            "type": "composer",
            "url": "https://packagist.org"
        }
    ],
    "require": {
        "symfony/symfony": "*"
    }
}
            
        satis.json
{
    "repositories": [
        {
            "type": "composer",
            "url": "https://susans-satis.example.com"
        },
        {
            "type": "composer",
            "url": "https://johns-satis.example.com"
        }
    ],
    "config": {
        "require-all": true
    }
}
            
        All involved packages and their relationships in a single expression
            Request: Install foo/x
            foo/x-v1 requires foo/y-v1
            foo/x-v2 requires foo/y
            bar/z-v1 replaces foo/y-v2
            
            
            (foo/x-v1 | foo/x-2) &
            (!foo/x-v1 | foo/y-v1) &
            (!foo/x-v1 | foo/y-v1 | foo/y-v2 | bar/z-v1)
            
            TRUE means install if not yet installed.
FALSE means remove if currently installed.
Would take a very long time
Would either have to start over and potentially loop for a long time, or produce difficult to understand sub-optimal results
http://getcomposer.org/doc/faqs/why-can't-composer-load-repositories-recursively.md
*nix: /home/example/.composer/config.json
OSX: /Users/example/.composer/config.json
Windows: C:\Users\example\AppData\Roaming\Composer\config.json
{
    "repositories": [
        {
            "type": "composer",
            "url": "https://satis.example.org/"
        }
    ]
}
            
        satis.json
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/nelmio/NelmioSecretBundle"
        },
        {
            "type": "vcs",
            "url": "https://github.com/nelmio/lib"
        }
    ]
}
            
        composer.json
{
    "require": {
        "nelmio/secret-bundle": "1.*",
        "nelmio/lib": "1.5.3"
    }
}
            
        
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/naderman/symfony"
        }
    ],
    "require": {
        "symfony/symfony": "dev-master"
    }
}
            
            Additional repositories take priority over the default ones
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/naderman/symfony"
        }
    ],
    "require": {
        "symfony/symfony": "dev-my-patch"
    }
}
            
            Your branches are available as well
Use composer show -v symfony/symfony to check
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/naderman/symfony"
        }
    ],
    "require": {
        "symfony/symfony": "dev-my-patch as 2.1.0"
        "symfony-cmf/symfony-cmf": "1.0.*"
    }
}
            
        
{
    "name": "naderman/symfony",
    "replace": {
        "symfony/symfony": "2.*"
    }
}
            
            
{
    "require": {
        "naderman/symfony": "3.0.*"
        "symfony-cmf/symfony-cmf": "1.0.*"
    }
}
            
        
{
    "name": "new/name",
    "replace": {
        "old/name": "*"
    }
}
            
        Symfony master branch
{
    "name": "symfony/symfony",
    "extra": {
        "branch-alias": {
            "dev-master": "2.2.x-dev"
        }
    }
}
            
            Your project
{
    "require": {
        "symfony/symfony": "2.2.*"
    },
    "minimum-stability": "dev"
}
            
            
{
    "require": {
        "symfony/symfony": "2.2.*@dev"
    }
}
            
        
$ composer update -v (--verbose)
Loading composer repositories with package information
Updating dependencies
  - Updating symfony/symfony dev-master (487b8c => 885d47)
    Checking out 885d4733664b040765f2faab68f3aacef58d1216
    Pulling in changes:
      885d473 - Fabien Potencier: merged branch Tobion/empty-requ....
      13937de - Fabien Potencier: replaced self.version/2.1.* by ...
      a9a0f42 - Fabien Potencier: merged 2.1
      3c32fd9 - Fabien Potencier: replaced self.version by 2.1.*...
      c5edce7 - Fabien Potencier: merged branch eventhor...
      4d6dd46 - Fabien Potencier: merged branch eventhor...
                
            
$ composer install
Installing dependencies from lock file
Your lock file is out of sync with your composer.json, run "composer.phar update" to update dependencies
            
        Update individual packages
$ composer update package1 package2
            
            Update only the lock file
$ composer update nothing
            
        Makes Composer slow with old lock file format
<Seldaek> Update your lock files people, the end is nigh!
                    $ composer update nothing
                
            
$ composer dump-autoload --optimize
                
            Scripts are annoying you during deployment?
$ composer install --no-scripts
$ app/console assetic:dump --env=prod --no-debug web/
$ [...]
            
        
$ composer validate
./composer.json is valid
            
        
$ composer install --prefer-source
            
        
$ composer self-update
                
            
$ curl -s https://getcomposer.org/installer | php -- --check
                
            
$ composer update -v
                
            
$ rm -rf vendor/
$ composer update -v
                
            $COMPOSER_HOME/config.jsonconfig.json--dry-run and --verbose to get more infocomposer update nothingcomposer dump-autoload --optimize