Using Composer
with WordPress
Micah Wood
@wpscholar
wpscholar.com/loopconf2015
What is ?
Manages Project
Dependencies and Versions
Why Use Composer?
Eliminates
Duplication
Consistent
Versioning
Reusable

Code
Documentation of
Dependencies
Composer Features
Automatic
Package Installation
Bulk Package
Updates
Class and File
Autoloading
Recursive
Dependencies
Package
Discovery
Installing Composer
Go to https://getcomposer.org/
Click ‘Getting Started’
Find your install method
$ composer diagnose
Check system for common errors
Using Composer
$ composer init
Create a new composer.json file
$ composer validate
Validate your composer.json file
$ composer require package
Adds package to composer.json and installs
$ composer require package --dev
Adds package to composer.json as a dev requirement and installs
$ composer install
Downloads and installs all dependencies
$ composer install --no-dev
Install composer dependencies for production environment
$ composer update
Checks for and installs package updates
$ composer update package
Checks for and installs a single package update
$ composer remove package
Removes package from composer.json and uninstalls
$ composer search package
Discover packages on packagist.org
$ composer config repositories.package
git git@github.com:username/package.git
Add a custom repository
Custom Repositories Require 

a composer.json File
Run composer init to generate
Specifying Versions
Exact Version
1.0.2
Range of Versions
>=1.0,<2.0
Wildcard Version
1.0.*
Next Significant Release Version
~1.2
Version Stability Flags

@stable 

@rc

@beta

@alpha

@dev
Semantic Versioning
semver.org
2.3.1
Increment when you make breaking changes
Major Version
2.3.1
Increment when you add backwards compatible features
Minor Version
2.3.1
Increment when you make backwards compatible bug fixes
Patch Version
How Composer Works
composer.json
How you declare your dependencies
composer.lock
How Composer stores
your dependencies
vendor directory
Where composer installs your packages
autoload files
require __DIR__ . '/vendor/autoload.php';
Using Composer
with WordPress
Use Case #1
Custom Plugin or Theme
Use Case #2
Custom Site or App
$ composer require johnpbloch/wordpress
Add WordPress as a dependency
$ composer config repositories.wpackagist
composer http://wpackagist.org/
Add wpackagist.org as a repository
$ composer require composer/installers
Enables WordPress themes and plugins to be put in their respective directories
Setup WordPress Paths
Places WordPress and its themes and plugins in their respective directories
File Structure
Project Bootstrapping
$ composer create-project package
Downloads project and runs `composer install`
$ composer create-project wpscholar/wp-skeleton
Setup a new WordPress project
$ composer create-project wpscholar/vvv-skeleton
Setup a new WordPress project using VVV
Thank You!
Micah Wood
@wpscholar
wpscholar.com/loopconf2015

Using Composer with WordPress - 2.0