Dependency management in Magento with Composer

Manuele Menozzi
Manuele MenozziOwner, Web Engineer and IT Consultant at Webgriffe®
Dependency 
management in 
Magento with 
Composer 
Manuele Menozzi 
Senior PHP Developer @ 
Webgriffe® 
Zend Certified PHP Engineer 
Proud & member 
Email: / Twitter: 
GrUSP PUG MoRe 
mmenozzi@webgriffe.com @mmenozzi
About Composer 
Composer is a tool for dependency management in PHP. It allows you to 
declare the dependent libraries your project needs and it will install 
them in your project for you.
What Composer does… 
/composer.json 
{ 
"require": { 
"psr/log": "~1.0", 
"acme/foo": "*", 
"monolog/monolog": "dev-master#2eb0c09" 
}, 
"require-dev": { 
"phpunit/phpunit": "~3.7.0" 
}, 
"repositories": [ 
{ 
"type": "vcs", 
"url": "git@github.com:AcmeCompany/FooLibrary.git" 
}, 
] 
} 
$ composer install
… and how 
composer install 
1. Available packages indexing 
2. Dependency tree and packages list calculation 
3. Packages list locking (composer.lock file) 
4. Packages download (in vendor folder) 
5. Custom installers 
6. Autoload dump
Benefits 
Time save 
Code reuse 
Code sharing 
Easy upgrades 
Same code usage
Composer & Magento 
The problem… 
Composer Magento 
./ 
├── htdocs/ 
└── vendor/ 
├── vendor-name-1/ 
│ ├── package-1/ 
│ ├── package-2/ 
│ └── package-n/ 
├── vendor-name-2/ 
└── vendor-name-n/ 
./ 
├── app/ 
│ ├── code/ 
│ │ ├── community/ 
│ │ └── local/ 
│ ├── design/ 
│ └── etc/ 
│ └── modules/ 
└── skin/
Composer & Magento 
The solution 
1. Available packages indexing 
2. Dependency tree and packages list calculation 
3. Packages list locking (composer.lock file) 
4. Packages download (in vendor folder) 
5. Custom installers 
6. Autoload dump
Magento Composer Installer 
by Magento Hackathon 
github.com/magento-hackathon/magento-composer-installer
Magento Composer Installer 
Install a module in your project 
./composer.json 
{ 
"require": { 
"foo/bar-module": "*", 
"magento-hackathon/magento-composer-installer": "*" 
}, 
"repositories": [ 
{ 
"type": "composer", 
"url": "http://packages.firegento.com" 
} 
], 
"extra":{ 
"magento-root-dir": "htdocs/" 
} 
} 
$ composer install
Magento Composer Installer 
Files mapping 
There are several ways how the mapping from files in the package into 
the Magento source is accomplished: 
1. A mapping in the composer.json 
2. The MagentoConnect package.xml file 
3. The modman file (see github.com/colinmollenhour/modman)
Magento Composer Installer 
Install a MagentoConnect module 
http://packages.firegento.com/ 
{ 
"require": { 
"connect20/locale_mage_community_it_it": "*" 
}, 
"repositories": [ 
{ 
"type": "composer", 
"url": "http://packages.firegento.com" 
} 
] 
}
Magento Composer Installer 
Install the Magento-Core and initialize your project 
Package magento/core on packages.firegento.com 
./composer.json 
{ 
"require": { 
"magento/core": "1.9.0.1" 
}, 
"repositories": [ 
{ 
"type": "composer", 
"url": "http://packages.firegento.com" 
} 
], 
"extra":{ 
"magento-root-dir": "htdocs/" 
} 
} 
Only 1.9.0.1 avaliable... :(
Magento Composer Installer 
Make a module installable with Composer 
./composer.json 
(important: "type": "magento-module") 
{ 
"name": "acme-company/module-name", 
"type": "magento-module", 
"license":"OSL-3.0", 
"description":"A short one line description of your module", 
"repositories": [ 
{ 
"type": "vcs", 
"url": "your/github/or/git/or/svn/etc/repository/uri" 
} 
], 
}
Magento Composer Installer 
Make a module installable with Composer 
Files mapping (modman example) 
./modman 
src app/code/local/AcmeCompany/ModuleName 
etc/AcmeCompany_ModuleName.xml app/etc/modules/ 
locale/it_IT/* app/locale/it_IT/ 
See github.com/colinmollenhour/modman for further info.
Magento Composer Installer 
Useful extras… 
Deploy strategy (magento-deploystrategy) 
Auto append to gitignore (auto-append-gitignore) 
Mapping overwrite (magento-map-overwrite)
Joind.in 
joind.in/talk/view/12698 
Any Question? 
Webgriffe 
Tailored Digital Works 
webgriffe.com | @webgriffe 
5+ Years of Experience with Magento 
5 Certified Developers (Zend & Magento) 
350+ Customers 
20+ Magento Extensions 
450+ Extensions Sold
Thank you!
1 of 17

Recommended

DevHub 3 - Composer plus Magento by
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoMagento Dev
1.1K views15 slides
Wordpress development: A Modern Approach by
Wordpress development:  A Modern ApproachWordpress development:  A Modern Approach
Wordpress development: A Modern ApproachAlessandro Fiore
948 views26 slides
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace by
OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace Alkacon Software GmbH & Co. KG
1.2K views23 slides
OpenCms Days 2013 - Site Management Tool by
OpenCms Days 2013 - Site Management ToolOpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management ToolAlkacon Software GmbH & Co. KG
2.7K views22 slides
Modern tools for magento development by
Modern tools for magento developmentModern tools for magento development
Modern tools for magento developmentUmberellaa
977 views24 slides
Webpack Introduction by
Webpack IntroductionWebpack Introduction
Webpack IntroductionAnjali Chawla
2.1K views18 slides

More Related Content

What's hot

WordPress mit Composer und Git verwalten by
WordPress mit Composer und Git verwaltenWordPress mit Composer und Git verwalten
WordPress mit Composer und Git verwaltenWalter Ebert
1.6K views48 slides
OpenCms Days 2015 Workflow using Docker and Jenkins by
OpenCms Days 2015 Workflow using Docker and JenkinsOpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and JenkinsAlkacon Software GmbH & Co. KG
976 views34 slides
Symfony ile Gelişmiş API Mimarisi by
Symfony ile Gelişmiş API MimarisiSymfony ile Gelişmiş API Mimarisi
Symfony ile Gelişmiş API MimarisiBehram ÇELEN
8.2K views22 slides
WordCamp Montreal 2016 WP-API + React with server rendering by
WordCamp Montreal 2016  WP-API + React with server renderingWordCamp Montreal 2016  WP-API + React with server rendering
WordCamp Montreal 2016 WP-API + React with server renderingZiad Saab
289 views31 slides
OpenCms Days 2013 - Start rolling with OpenCms 9 by
OpenCms Days 2013 - Start rolling with OpenCms 9OpenCms Days 2013 - Start rolling with OpenCms 9
OpenCms Days 2013 - Start rolling with OpenCms 9Alkacon Software GmbH & Co. KG
2.2K views31 slides
Drupal 8 improvements for developer productivity php symfony and more by
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and moreAcquia
1.3K views18 slides

What's hot(20)

WordPress mit Composer und Git verwalten by Walter Ebert
WordPress mit Composer und Git verwaltenWordPress mit Composer und Git verwalten
WordPress mit Composer und Git verwalten
Walter Ebert1.6K views
Symfony ile Gelişmiş API Mimarisi by Behram ÇELEN
Symfony ile Gelişmiş API MimarisiSymfony ile Gelişmiş API Mimarisi
Symfony ile Gelişmiş API Mimarisi
Behram ÇELEN8.2K views
WordCamp Montreal 2016 WP-API + React with server rendering by Ziad Saab
WordCamp Montreal 2016  WP-API + React with server renderingWordCamp Montreal 2016  WP-API + React with server rendering
WordCamp Montreal 2016 WP-API + React with server rendering
Ziad Saab289 views
Drupal 8 improvements for developer productivity php symfony and more by Acquia
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and more
Acquia1.3K views
Drupal + composer = new love !? by nuppla
Drupal + composer = new love !?Drupal + composer = new love !?
Drupal + composer = new love !?
nuppla771 views
Oleh Kobchenko - Configure Magento 2 to get maximum performance by Meet Magento Italy
Oleh Kobchenko - Configure Magento 2 to get maximum performanceOleh Kobchenko - Configure Magento 2 to get maximum performance
Oleh Kobchenko - Configure Magento 2 to get maximum performance
Meet Magento Italy32K views
Browser Exploitation Framework Tutorial by imlaurel2
Browser Exploitation Framework TutorialBrowser Exploitation Framework Tutorial
Browser Exploitation Framework Tutorial
imlaurel24.5K views
KAK Etkinliği OJS de Symfony kullanımı by Behram Çelen
KAK Etkinliği OJS de Symfony kullanımıKAK Etkinliği OJS de Symfony kullanımı
KAK Etkinliği OJS de Symfony kullanımı
Behram Çelen465 views
Intro to Powershell by Dean Willson
Intro to PowershellIntro to Powershell
Intro to Powershell
Dean Willson2.6K views
Efficient development workflows with composer by nuppla
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
nuppla1.5K views
Efficient development workflows with composer by nuppla
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
nuppla431 views
OVERVIEW: Chromium Source Tree by Chang W. Doh
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh4.9K views
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot by OpenCms
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms411 views

Similar to Dependency management in Magento with Composer

Magento Fireside Chat: "Wiring Mageno Projects" by
Magento Fireside Chat: "Wiring Mageno Projects"Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"AOE
4.2K views56 slides
Composer by
ComposerComposer
ComposerFederico Damián Lozada Mosto
1.9K views54 slides
PHP Dependency Management with Composer by
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with ComposerAdam Englander
5.7K views47 slides
Composer by
ComposerComposer
ComposerTom Corrigan
1.2K views69 slides
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2 by
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2Meet Magento Italy
603 views13 slides
Composer & Drupal by
Composer & DrupalComposer & Drupal
Composer & Drupaldrubb
999 views26 slides

Similar to Dependency management in Magento with Composer(20)

Magento Fireside Chat: "Wiring Mageno Projects" by AOE
Magento Fireside Chat: "Wiring Mageno Projects"Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"
AOE 4.2K views
PHP Dependency Management with Composer by Adam Englander
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
Adam Englander5.7K views
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2 by Meet Magento Italy
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2
Meet Magento Italy603 views
Composer & Drupal by drubb
Composer & DrupalComposer & Drupal
Composer & Drupal
drubb999 views
Dependency management with Composer by Jason Grimes
Dependency management with ComposerDependency management with Composer
Dependency management with Composer
Jason Grimes3.3K views
Usage Note of SWIG for PHP by William Lee
Usage Note of SWIG for PHPUsage Note of SWIG for PHP
Usage Note of SWIG for PHP
William Lee2.3K views
Php Dependency Management with Composer ZendCon 2016 by Clark Everetts
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
Clark Everetts1K views
Browser Extensions for Web Hackers by Mark Wubben
Browser Extensions for Web HackersBrowser Extensions for Web Hackers
Browser Extensions for Web Hackers
Mark Wubben2.6K views
Bower & Grunt - A practical workflow by Riccardo Coppola
Bower & Grunt - A practical workflowBower & Grunt - A practical workflow
Bower & Grunt - A practical workflow
Riccardo Coppola5.8K views
Setting up the hyperledger composer in ubuntu by kesavan N B
Setting up the hyperledger composer in ubuntuSetting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntu
kesavan N B1.4K views
Chrome Extensions for Web Hackers by Mark Wubben
Chrome Extensions for Web HackersChrome Extensions for Web Hackers
Chrome Extensions for Web Hackers
Mark Wubben8.6K views
Orange is the new blue: How to port Chrome Extension to Firefox Extension by chaykaborya
Orange is the new blue: How to port Chrome Extension to Firefox ExtensionOrange is the new blue: How to port Chrome Extension to Firefox Extension
Orange is the new blue: How to port Chrome Extension to Firefox Extension
chaykaborya1.1K views
Php Dependency Management with Composer ZendCon 2017 by Clark Everetts
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017
Clark Everetts670 views
Cordova iOS Native Plugin Development by Josue Bustos
Cordova iOS Native Plugin DevelopmentCordova iOS Native Plugin Development
Cordova iOS Native Plugin Development
Josue Bustos524 views
Distributing UI Libraries: in a post Web-Component world by Rachael L Moore
Distributing UI Libraries: in a post Web-Component worldDistributing UI Libraries: in a post Web-Component world
Distributing UI Libraries: in a post Web-Component world
Rachael L Moore553 views

Recently uploaded

Is Entireweb better than Google by
Is Entireweb better than GoogleIs Entireweb better than Google
Is Entireweb better than Googlesebastianthomasbejan
12 views1 slide
Affiliate Marketing by
Affiliate MarketingAffiliate Marketing
Affiliate MarketingNavin Dhanuka
16 views30 slides
PORTFOLIO 1 (Bret Michael Pepito).pdf by
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdfbrejess0410
8 views6 slides
WEB 2.O TOOLS: Empowering education.pptx by
WEB 2.O TOOLS: Empowering education.pptxWEB 2.O TOOLS: Empowering education.pptx
WEB 2.O TOOLS: Empowering education.pptxnarmadhamanohar21
16 views16 slides
information by
informationinformation
informationkhelgishekhar
9 views4 slides
How to think like a threat actor for Kubernetes.pptx by
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptxLibbySchulze1
5 views33 slides

Recently uploaded(9)

PORTFOLIO 1 (Bret Michael Pepito).pdf by brejess0410
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdf
brejess04108 views
How to think like a threat actor for Kubernetes.pptx by LibbySchulze1
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptx
LibbySchulze15 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC297 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat100 views
Marketing and Community Building in Web3 by Federico Ast
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3
Federico Ast12 views

Dependency management in Magento with Composer

  • 1. Dependency management in Magento with Composer Manuele Menozzi Senior PHP Developer @ Webgriffe® Zend Certified PHP Engineer Proud & member Email: / Twitter: GrUSP PUG MoRe mmenozzi@webgriffe.com @mmenozzi
  • 2. About Composer Composer is a tool for dependency management in PHP. It allows you to declare the dependent libraries your project needs and it will install them in your project for you.
  • 3. What Composer does… /composer.json { "require": { "psr/log": "~1.0", "acme/foo": "*", "monolog/monolog": "dev-master#2eb0c09" }, "require-dev": { "phpunit/phpunit": "~3.7.0" }, "repositories": [ { "type": "vcs", "url": "git@github.com:AcmeCompany/FooLibrary.git" }, ] } $ composer install
  • 4. … and how composer install 1. Available packages indexing 2. Dependency tree and packages list calculation 3. Packages list locking (composer.lock file) 4. Packages download (in vendor folder) 5. Custom installers 6. Autoload dump
  • 5. Benefits Time save Code reuse Code sharing Easy upgrades Same code usage
  • 6. Composer & Magento The problem… Composer Magento ./ ├── htdocs/ └── vendor/ ├── vendor-name-1/ │ ├── package-1/ │ ├── package-2/ │ └── package-n/ ├── vendor-name-2/ └── vendor-name-n/ ./ ├── app/ │ ├── code/ │ │ ├── community/ │ │ └── local/ │ ├── design/ │ └── etc/ │ └── modules/ └── skin/
  • 7. Composer & Magento The solution 1. Available packages indexing 2. Dependency tree and packages list calculation 3. Packages list locking (composer.lock file) 4. Packages download (in vendor folder) 5. Custom installers 6. Autoload dump
  • 8. Magento Composer Installer by Magento Hackathon github.com/magento-hackathon/magento-composer-installer
  • 9. Magento Composer Installer Install a module in your project ./composer.json { "require": { "foo/bar-module": "*", "magento-hackathon/magento-composer-installer": "*" }, "repositories": [ { "type": "composer", "url": "http://packages.firegento.com" } ], "extra":{ "magento-root-dir": "htdocs/" } } $ composer install
  • 10. Magento Composer Installer Files mapping There are several ways how the mapping from files in the package into the Magento source is accomplished: 1. A mapping in the composer.json 2. The MagentoConnect package.xml file 3. The modman file (see github.com/colinmollenhour/modman)
  • 11. Magento Composer Installer Install a MagentoConnect module http://packages.firegento.com/ { "require": { "connect20/locale_mage_community_it_it": "*" }, "repositories": [ { "type": "composer", "url": "http://packages.firegento.com" } ] }
  • 12. Magento Composer Installer Install the Magento-Core and initialize your project Package magento/core on packages.firegento.com ./composer.json { "require": { "magento/core": "1.9.0.1" }, "repositories": [ { "type": "composer", "url": "http://packages.firegento.com" } ], "extra":{ "magento-root-dir": "htdocs/" } } Only 1.9.0.1 avaliable... :(
  • 13. Magento Composer Installer Make a module installable with Composer ./composer.json (important: "type": "magento-module") { "name": "acme-company/module-name", "type": "magento-module", "license":"OSL-3.0", "description":"A short one line description of your module", "repositories": [ { "type": "vcs", "url": "your/github/or/git/or/svn/etc/repository/uri" } ], }
  • 14. Magento Composer Installer Make a module installable with Composer Files mapping (modman example) ./modman src app/code/local/AcmeCompany/ModuleName etc/AcmeCompany_ModuleName.xml app/etc/modules/ locale/it_IT/* app/locale/it_IT/ See github.com/colinmollenhour/modman for further info.
  • 15. Magento Composer Installer Useful extras… Deploy strategy (magento-deploystrategy) Auto append to gitignore (auto-append-gitignore) Mapping overwrite (magento-map-overwrite)
  • 16. Joind.in joind.in/talk/view/12698 Any Question? Webgriffe Tailored Digital Works webgriffe.com | @webgriffe 5+ Years of Experience with Magento 5 Certified Developers (Zend & Magento) 350+ Customers 20+ Magento Extensions 450+ Extensions Sold