Top Banner
Composer the right way @rdohms Rafael Dohms
158

Composer The Right Way - 010PHP

Apr 16, 2017

Download

Software

Rafael Dohms
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Composer The Right Way - 010PHP

Composerthe right way

@rdohmsRafael Dohms

Page 2: Composer The Right Way - 010PHP

photo: smileymanwithahat

Page 3: Composer The Right Way - 010PHP
Page 4: Composer The Right Way - 010PHP
Page 5: Composer The Right Way - 010PHP

photo: Rob Allen

jobs.usabilla.comWe are hiring!

Page 6: Composer The Right Way - 010PHP

photo: 18millionpixels

Page 7: Composer The Right Way - 010PHP

Library Publisher

photo: 18millionpixels

Page 8: Composer The Right Way - 010PHP

Library Publisher

Library Consumer

photo: 18millionpixels

Page 9: Composer The Right Way - 010PHP

Library Publisher

Library

Library Consumer

photo: 18millionpixels

Page 10: Composer The Right Way - 010PHP

Library Publisher

Library

Library Consumer

Packagist

photo: 18millionpixels

Page 11: Composer The Right Way - 010PHP

photo: 18millionpixels

Page 12: Composer The Right Way - 010PHP

{ "require": { "monolog/monolog": “2.0” }}

photo: 18millionpixels

Page 13: Composer The Right Way - 010PHP

{ "require": { "monolog/monolog": “2.0” }}

{ "name": “monolog/monolog”

...}

photo: 18millionpixels

Page 14: Composer The Right Way - 010PHP

{ "require": { "monolog/monolog": “2.0” }}

{ "name": “monolog/monolog”

...}

./composer.json has been updatedLoading composer repositories with package informationUpdating dependencies (including require-dev)Your requirements could not be resolved to an installable set of packages.

Problem 1 - The requested package monolog/monolog could not be found in any version, there may be a typo in the package name.

Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

Installation failed, reverting ./composer.json to its original content.

photo: 18millionpixels

Page 15: Composer The Right Way - 010PHP

{ "require": { "monolog/monolog": “2.0” }}

{ "name": “monolog/monolog”

...}

./composer.json has been updatedLoading composer repositories with package informationUpdating dependencies (including require-dev)Your requirements could not be resolved to an installable set of packages.

Problem 1 - The requested package monolog/monolog could not be found in any version, there may be a typo in the package name.

Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

Installation failed, reverting ./composer.json to its original content.

___~1.1

photo: 18millionpixels

Page 16: Composer The Right Way - 010PHP

{ "require": { "monolog/monolog": “2.0” }}

{ "name": “monolog/monolog”

...}

./composer.json has been updatedLoading composer repositories with package informationUpdating dependencies (including require-dev)Your requirements could not be resolved to an installable set of packages.

Problem 1 - The requested package monolog/monolog could not be found in any version, there may be a typo in the package name.

Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

Installation failed, reverting ./composer.json to its original content.

./composer.json has been updatedLoading composer repositories with package informationUpdating dependencies (including require-dev) - Installing psr/log (1.0.0) Loading from cache

- Installing monolog/monolog (1.11.0) Downloading: 100%

monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)[...]monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)Writing lock fileGenerating autoload files

___~1.1

photo: 18millionpixels

Page 17: Composer The Right Way - 010PHP

composer

Page 18: Composer The Right Way - 010PHP

composercomposer.json!

Page 19: Composer The Right Way - 010PHP

composercomposer.json!

composer.lock!

Page 20: Composer The Right Way - 010PHP

composercomposer.json!

composer.lock!

Page 21: Composer The Right Way - 010PHP

discovery Packagist

"

composercomposer.json!

composer.lock!

Page 22: Composer The Right Way - 010PHP

discovery sourcePackagist

"

Repository

#

composercomposer.json!

composer.lock!

Page 23: Composer The Right Way - 010PHP

discovery source

installation

Packagist

"

Vendor Folder

$

Repository

#

composercomposer.json!

composer.lock!

Page 24: Composer The Right Way - 010PHP

$ composer self-update

Production

$ composer self-update --snapshot

Development

$ composer self-update --preview

CI / Build

Page 25: Composer The Right Way - 010PHP

$ composer init

Library Publisher

Page 26: Composer The Right Way - 010PHP

$ composer init

Library Publisher

$ composer require <vendor>/<package>

Library Consumer

Page 27: Composer The Right Way - 010PHP

Install instructions

Page 28: Composer The Right Way - 010PHP

Install instructions

1. Edit your composer.json

Page 29: Composer The Right Way - 010PHP

Install instructions

1. Edit your composer.json2. Add `package/vendor`

Page 30: Composer The Right Way - 010PHP

Install instructions

1. Edit your composer.json2. Add `package/vendor`3. Run `composer update`

Page 31: Composer The Right Way - 010PHP

Install instructions

1. Edit your composer.json2. Add `package/vendor`3. Run `composer update`

or was that install? err… i can’t remember.

Page 32: Composer The Right Way - 010PHP
Page 33: Composer The Right Way - 010PHP

$ composer require monolog/monolog

Tip

Page 34: Composer The Right Way - 010PHP

$ composer require monolog/monolog

Tip

Using version ^1.11 for monolog/monolog

Page 35: Composer The Right Way - 010PHP

$ composer require monolog/monolog --sort-packages

Tip

Page 36: Composer The Right Way - 010PHP

$ composer require monolog/monolog

--prefer-stable--prefer-lowest--no-scripts

Tip

Page 37: Composer The Right Way - 010PHP

$ composer remove monolog/monolog

Tip

Page 38: Composer The Right Way - 010PHP

Library PublishersComposer for

Page 39: Composer The Right Way - 010PHP

Library Publisher Unique vendor names

vendor / package

Page 40: Composer The Right Way - 010PHP

Library Publisher Unique vendor names

pick your own unique vendor

Page 41: Composer The Right Way - 010PHP

Library Publisher Unique vendor names

or join a collective

Page 42: Composer The Right Way - 010PHP

README!

CHANGELOG%

LICENSE&

Library Publisher What’s in your library?

Page 43: Composer The Right Way - 010PHP

README!

CHANGELOG%

LICENSE&

Library Publisher What’s in your library?

' What problem does it solve?' Usage examples' Install instructions' How can I contribute?

Page 44: Composer The Right Way - 010PHP

README!

CHANGELOG%

LICENSE&

Library Publisher What’s in your library?

' List relevant changes' Make BC breaks prominent' Show examples of how to upgrade

' What problem does it solve?' Usage examples' Install instructions' How can I contribute?

Page 45: Composer The Right Way - 010PHP

README!

CHANGELOG%

LICENSE&

Library Publisher What’s in your library?

' List relevant changes' Make BC breaks prominent' Show examples of how to upgrade

' Pick one that reflects your values' choosealicense.com can help

' What problem does it solve?' Usage examples' Install instructions' How can I contribute?

Page 46: Composer The Right Way - 010PHP

Library Publisher Semantic Versioning

1 . 2 3.major minor patch

Page 47: Composer The Right Way - 010PHP

Library Publisher Semantic Versioning

1 . 2 3.major minor patch

Bug Fixes

Page 48: Composer The Right Way - 010PHP

Library Publisher Semantic Versioning

1 . 2 3.major minor patch

New Features Bug Fixes

Page 49: Composer The Right Way - 010PHP

Library Publisher Semantic Versioning

1 . 2 3.major minor patch

API / BC Breaks New Features Bug Fixes

Page 50: Composer The Right Way - 010PHP

Library Publisher Tagging

Please, tag your releases.

Page 51: Composer The Right Way - 010PHP

Library Publisher Tagging

Please, tag your releases.

often!

Page 52: Composer The Right Way - 010PHP

http://phppackagechecklist.com/

The PHP PackageChecklist

Library Publisher The Checklist

Page 53: Composer The Right Way - 010PHP

Library Publisher “I'm out"

photo: nickwebb

Page 54: Composer The Right Way - 010PHP

Library Publisher “I'm out"

Page 55: Composer The Right Way - 010PHP

Library Publisher “I'm out"

Click here and provide an alternative

Page 56: Composer The Right Way - 010PHP

Library Publisher “I'm out"

Page 57: Composer The Right Way - 010PHP

Pick the correct version

Library Publisher Pick a Version

Page 58: Composer The Right Way - 010PHP

*the asteriskLibrary Publisher Pick a Version

Page 59: Composer The Right Way - 010PHP

*the asterisk○Library Publisher Pick a Version

Page 60: Composer The Right Way - 010PHP

~the tilde

Library Publisher Pick a Version

Page 61: Composer The Right Way - 010PHP

~1.2>=1.2.0, <2.0.0

Library Publisher Pick a Version

Page 62: Composer The Right Way - 010PHP

~1.2>=1.2.0, <2.0.0

Library Publisher Pick a Version

)

Page 63: Composer The Right Way - 010PHP

~1.2.3>=1.2.3, <1.3

Library Publisher Pick a Version

Page 64: Composer The Right Way - 010PHP

~1.2.3>=1.2.3, <1.3

Library Publisher Pick a Version

)

Page 65: Composer The Right Way - 010PHP

Yo @rdohms, I’m really happy for you and

I’m gonna let you finish, but the tilde operator is

totally old news.

Page 66: Composer The Right Way - 010PHP

^the caretLibrary Publisher Pick a Version

Page 67: Composer The Right Way - 010PHP

1.2.3>=1.2.3, <2.0.0

Library Publisher Pick a Version

^

Page 68: Composer The Right Way - 010PHP

1.2.3>=1.2.3, <2.0.0

Library Publisher Pick a Version

)

^)

Page 69: Composer The Right Way - 010PHP

0.3.0>=0.3.0, <0.4.0

Library Publisher Pick a Version

^

Page 70: Composer The Right Way - 010PHP

0.3.0>=0.3.0, <0.4.0

Library Publisher Pick a Version

^)

Page 71: Composer The Right Way - 010PHP

0.3.0>=0.3.0, <0.4.0

Library Publisher Pick a Version

^)

Major Version Zero

Page 72: Composer The Right Way - 010PHP

"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},

“require-dev": { “phpunit/phpunit": “~3.7”}

Library Publisher Pick a Version

"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},

“require-dev": { “phpunit/phpunit": “~4”}

3rd party library

Your application

Page 73: Composer The Right Way - 010PHP

"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},

“require-dev": { “phpunit/phpunit": “~3.7”}

Library Publisher Pick a Version

"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},

“require-dev": { “phpunit/phpunit": “~4”}

3rd party library

Your application

*

Page 74: Composer The Right Way - 010PHP

"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},

“require-dev": { “phpunit/phpunit": “~3.7”}

Library Publisher Pick a Version

"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},

“require-dev": { “phpunit/phpunit": “~4”}

3rd party library

Your application

*

Page 75: Composer The Right Way - 010PHP

"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},

“require-dev": { “phpunit/phpunit": “~3.7”}

Library Publisher Pick a Version

"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},

“require-dev": { “phpunit/phpunit": “~4”}

3rd party library

Your application

*

^2.1

Page 76: Composer The Right Way - 010PHP

Library ConsumersComposer for

Page 77: Composer The Right Way - 010PHP

Library Consumer Install or update?

install or update?

Page 78: Composer The Right Way - 010PHP

Library Consumer Install or update?

Make sure you have installed the last updates from other developers.

?

install updateor

Page 79: Composer The Right Way - 010PHP

Library Consumer Install or update?

Make sure you have installed the last updates from other developers.

?

install updateor

Page 80: Composer The Right Way - 010PHP

Library Consumer Install or update?

Deploying a new release of your application to production.

?

install updateor

Page 81: Composer The Right Way - 010PHP

Library Consumer Install or update?

Deploying a new release of your application to production.

?

install updateor

Page 82: Composer The Right Way - 010PHP

Library Consumer Install or update?

Checked out a new project and want to start coding.

?

install updateor

Page 83: Composer The Right Way - 010PHP

Library Consumer Install or update?

Checked out a new project and want to start coding.

?

install updateor

Page 84: Composer The Right Way - 010PHP

Library Consumer Install or update?

Grab new versions for the dependencies of your project.

?

install updateor

Page 85: Composer The Right Way - 010PHP

Library Consumer Install or update?

Grab new versions for the dependencies of your project.

?

install updateor

Page 86: Composer The Right Way - 010PHP

Your application

$

Public Repository

#

Library Consumer Behind the scenes with install/update

composer.lock!

composer installcomposer update

Page 87: Composer The Right Way - 010PHP

Your application

$

Public Repository

#

Library Consumer Behind the scenes with install/update

composer.lock!

read

composer installcomposer update

Page 88: Composer The Right Way - 010PHP

Your application

$

Public Repository

#

Library Consumer Behind the scenes with install/update

composer.lock!

read grab version

composer installcomposer update

Page 89: Composer The Right Way - 010PHP

Your application

$

Public Repository

#

Library Consumer Behind the scenes with install/update

composer.lock!

read grab version

check latest compatible release

composer installcomposer update

Page 90: Composer The Right Way - 010PHP

Your application

$

Public Repository

#

Library Consumer Behind the scenes with install/update

composer.lock!

read grab version

check latest compatible release

update

composer installcomposer update

Page 91: Composer The Right Way - 010PHP

Your application

$

Public Repository

#

Library Consumer Behind the scenes with install/update

composer.lock!

read grab version

check latest compatible release

update

composer installcomposer update

no lock file? composer update

Page 92: Composer The Right Way - 010PHP

Library Consumer The .lock issue

commit your lock file*

Page 93: Composer The Right Way - 010PHP

Library Consumer The .lock issue

commit your lock file*

* always! even for libraries! :D

Page 94: Composer The Right Way - 010PHP

Library Consumer The .lock issue

commit your lock file*

* always! even for libraries! :D** we will discuss that over beer.

Page 95: Composer The Right Way - 010PHP

Tip

since beta1

Library Consumer Updating interactively

Page 96: Composer The Right Way - 010PHP

$ composer update —interactive (-i)

Tip

since beta1

Library Consumer Updating interactively

Page 97: Composer The Right Way - 010PHP

CONFLICT (content): Merge conflict in composer.lockAutomatic merge failed; fix conflicts and then commit the result.

Library Consumer Merge Conflict

Page 98: Composer The Right Way - 010PHP

CONFLICT (content): Merge conflict in composer.lockAutomatic merge failed; fix conflicts and then commit the result.

Library Consumer Merge Conflict

Page 99: Composer The Right Way - 010PHP
Page 100: Composer The Right Way - 010PHP
Page 101: Composer The Right Way - 010PHP

# First. # Get the valid, clean external version of the lock$ git checkout origin/<target> -- composer.lock composer.json

# Second.# Replay your changes, whatever they were$ composer require <new/package> --update-with-dependencies$ composer update <existing/package>

# Third.# Commit your changes$ git add .$ git commit.

# Profit!

Solving Merge Conflicts

Library Consumer Solving Merge Conflicts

Page 102: Composer The Right Way - 010PHP

Pick the correct version

Library Consumer Version Selection

Page 103: Composer The Right Way - 010PHP

Library Consumer Version Selection

dev-master

Page 104: Composer The Right Way - 010PHP

Library Consumer Version Selection

Page 105: Composer The Right Way - 010PHP

Library Consumer Version Selection

Page 106: Composer The Right Way - 010PHP

Tip

since beta1

Page 107: Composer The Right Way - 010PHP

$ composer why-not <package>

doctrine/doctrine-bundle 1.6.2 requires symfony/framework-bundle (~2.3|~3.0)doctrine/doctrine-cache-bundle 1.3.0 requires symfony/doctrine-bridge (~2.2|~3.0)doctrine/doctrine-fixtures-bundle 2.3.0 requires symfony/doctrine-bridge (~2.3|~3.0)doctrine/doctrine-migrations-bundle dev-master requires symfony/framework-bundle (~2.3|~3.0)doctrine/migrations dev-master requires symfony/yaml (~2.3|~3.0)doctrine/orm v2.5.4 requires symfony/console (~2.5|~3.0)friendsofsymfony/rest-bundle 1.7.7 requires symfony/http-kernel (^2.3.24|~3.0)incenteev/composer-parameter-handler v2.1.2 requires symfony/yaml (~2.3|~3.0)jms/serializer-bundle 1.1.0 requires symfony/framework-bundle (~2.3|~3.0)knplabs/knp-paginator-bundle 2.5.1 requires symfony/framework-bundle (~2.3|~3.0)kriswallsmith/assetic v1.3.2 requires symfony/process (~2.1|~3.0)

Tip

since beta1

Page 108: Composer The Right Way - 010PHP

$ composer outdated

composer/composer 1.0.3 1.1.0 filp/whoops 2.1.0 2.1.2 justinrainbow/json-schema 1.6.1 2.0.3 nikic/fast-route v0.7.0 v1.0.0 oscarotero/psr7-middlewares v3.14.3 v3.15.1

Tip

Page 109: Composer The Right Way - 010PHP

Library Consumer Using forks

found a bug?

Page 110: Composer The Right Way - 010PHP

Library Consumer Using forks

$ composer install --prefer-source

Tip

Page 111: Composer The Right Way - 010PHP

Library Consumer Using forks

Page 112: Composer The Right Way - 010PHP

Library Consumer Using forks

patch it,

Page 113: Composer The Right Way - 010PHP

Library Consumer Using forks

patch it,fork it,

Page 114: Composer The Right Way - 010PHP

Library Consumer Using forks

patch it,fork it,

push it…

Page 115: Composer The Right Way - 010PHP

Library Consumer Using forks

patch it,fork it,

push it…wait for it.

Page 116: Composer The Right Way - 010PHP

Library Consumer Using forks

patch it,fork it,

push it…wait for it.

Page 117: Composer The Right Way - 010PHP

Library Consumer Using forks

symfony/symfony

Page 118: Composer The Right Way - 010PHP

Library Consumer Using forks

symfony/symfony

rdohms/symfony

Page 119: Composer The Right Way - 010PHP

Library Consumer Using forks

symfony/symfony

rdohms/symfony

"repositories": [ { "type": "vcs", "url": "https://github.com/rdohms/symfony" } ]

Page 120: Composer The Right Way - 010PHP

Library Consumer Using forks

symfony/symfony

rdohms/symfony

"repositories": [ { "type": "vcs", "url": "https://github.com/rdohms/symfony" } ]

+

Page 121: Composer The Right Way - 010PHP

Library Consumer Using forks

Do not put forked repositories

on packagist

,

Page 122: Composer The Right Way - 010PHP

Library Consumer Using forks

"require": { "symfony/symfony": "dev-my-patch as 2.5.0"}

Tip

Page 123: Composer The Right Way - 010PHP

Library Consumer Composer and deployments

Composer and

production

Page 124: Composer The Right Way - 010PHP

Library Consumer Composer and deployments

$ composer install --prefer-dist --no-dev --optimize-autoloader

,

Page 125: Composer The Right Way - 010PHP

Library Consumer Composer and deployments

$ composer install --prefer-dist --no-dev --optimize-autoloader

,

Page 126: Composer The Right Way - 010PHP

Library Consumer Composer and deployments

$ composer install --prefer-dist --no-dev --optimize-autoloader

,

- Install same versions

- Uses information defined in the composer.lock file

Page 127: Composer The Right Way - 010PHP

$ composer install --prefer-dist --no-dev --optimize-autoloader

Library Consumer Composer and deployments

,

Page 128: Composer The Right Way - 010PHP

$ composer install --prefer-dist --no-dev --optimize-autoloader

Library Consumer Composer and deployments

,

- Downloads distribution packages

- Can use local cache for previously downloaded

- No git required

Page 129: Composer The Right Way - 010PHP

$ composer install --prefer-dist --no-dev --optimize-autoloader

Library Consumer Composer and deployments

,

Page 130: Composer The Right Way - 010PHP

$ composer install --prefer-dist --no-dev --optimize-autoloader

Library Consumer Composer and deployments

,

- Avoids download unnecessary developer libraries

Page 131: Composer The Right Way - 010PHP

$ composer install --prefer-dist --no-dev --optimize-autoloader

Library Consumer Composer and deployments

,

Page 132: Composer The Right Way - 010PHP

$ composer install --prefer-dist --no-dev --optimize-autoloader

Library Consumer Composer and deployments

,

- Generates classmap from PSR-0/4 autoloaders

- Speeds up autoloading

Page 133: Composer The Right Way - 010PHP

Library Consumer Licensing

$ composer licenses

Name: __root__Version: 1.0.0Licenses: noneDependencies:

doctrine/annotations v1.2.1 MIT doctrine/cache v1.3.1 MIT doctrine/collections v1.2 MIT doctrine/common v2.4.2 MIT doctrine/inflector v1.0 MIT doctrine/lexer v1.0 MIT psr/log 1.0.0 MIT symfony/symfony v2.5.6 MIT twig/twig v1.16.2 BSD-3-Clause

Tip

Page 134: Composer The Right Way - 010PHP

Library Consumer Simulating Environments

Tip

Production Server

.

Development Server

.

Page 135: Composer The Right Way - 010PHP

Library Consumer Simulating Environments

Tip

Production Server

.

Development Server

.PHP 7.0

PHP 5.6

Page 136: Composer The Right Way - 010PHP

Library Consumer Simulating Environments

"config": { "platform": { "php": “5.6.2”, “ext-mongodb”: “1.1” } },

Tip

Production Server

.

Development Server

.PHP 7.0

PHP 5.6

Page 137: Composer The Right Way - 010PHP

Library Consumer Simulating Environments

$ composer install —-ignore-platform-reqs

Tip

Page 138: Composer The Right Way - 010PHP

Library Consumer Private Packages and Proxy

Satis and Toran

Page 139: Composer The Right Way - 010PHP

composer Packagist

"

Your application

$

Public Repository

#

Library Consumer Private Packages and Proxy

Page 140: Composer The Right Way - 010PHP

composer

Packagist

"

Your application

$

Public Repository

#

Satis / Toran

"

Private Repository

/

proxy

Library Consumer Private Packages and Proxy

Page 141: Composer The Right Way - 010PHP

Library Consumer Private Packages and Proxy

toranproxy.comprivate repos, automatic packagist proxy

and support composer development

Page 142: Composer The Right Way - 010PHP

Library Consumer Tooling

$ composer require jquery/jquery

How many of you?

Page 143: Composer The Right Way - 010PHP

Library Consumer Tooling

Page 144: Composer The Right Way - 010PHP

Library Consumer Tooling

Page 145: Composer The Right Way - 010PHP

Javascript only Developer

Library Consumer Tooling

0 my-js-library

1

Page 146: Composer The Right Way - 010PHP

Javascript only Developer

Library Consumer Tooling

0 my-js-library! package.json

1

Page 147: Composer The Right Way - 010PHP

Javascript only Developer

Library Consumer Tooling

0 my-js-library! package.json

! bower.json

1

Page 148: Composer The Right Way - 010PHP

Javascript only Developer

Library Consumer Tooling

0 my-js-library

! composer.json

! package.json

! bower.json

1

Page 149: Composer The Right Way - 010PHP

Javascript only Developer

Library Consumer Tooling

0 my-js-library

! composer.json

! package.json

! bower.json

! .gemspec

1

Page 150: Composer The Right Way - 010PHP

Javascript only Developer

Library Consumer Tooling

0 my-js-library

! composer.json

! package.json

! bower.json

! .gemspec

1

2

2

Page 151: Composer The Right Way - 010PHP

Library Consumer Tooling

Page 152: Composer The Right Way - 010PHP

Library Consumer Tooling

Page 153: Composer The Right Way - 010PHP

Library Consumer Tooling

Right tool.Right job.

Page 154: Composer The Right Way - 010PHP

Library Consumer One last thing

One last thing…

Page 155: Composer The Right Way - 010PHP

Library Consumer pickle!

Page 156: Composer The Right Way - 010PHP

Library Consumer pickle!

$ pickle install memcache

https://wiki.php.net/rfc/picklehttps://github.com/FriendsOfPHP/pickle

Page 157: Composer The Right Way - 010PHP

Thank you.

https://joind.in/talk/cc531

jobs.usabilla.comWe are hiring!

Page 158: Composer The Right Way - 010PHP

Thank you.any questions?

3 http://slides.doh.ms

4 http://doh.ms

5 @rdohms

https://joind.in/talk/cc531

jobs.usabilla.comWe are hiring!