Top Banner
Dependency management in Magento with Composer Manuele Menozzi Senior PHP Developer @ Zend Certified PHP Engineer Proud & member Email: / Twitter: Webgriffe® GrUSP PUG MoRe [email protected] @mmenozzi
17

Dependency management in Magento with Composer

Jul 02, 2015

Download

Internet

Manuele Menozzi

Dependency management in Magento with Composer. Talk at MageDay 2014 in Parma, Italy.
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: Dependency management in Magento with Composer

Dependencymanagement inMagento with

ComposerManuele Menozzi

Senior PHP Developer @ Zend Certified PHP EngineerProud & member

Email: / Twitter:

Webgriffe®

GrUSP PUG MoRe

[email protected] @mmenozzi

Page 2: Dependency management in Magento with Composer

About Composer

Composer is a tool for dependency management in PHP. It allows you todeclare the dependent libraries your project needs and it will install

them in your project for you.

Page 3: Dependency management in Magento with Composer

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": "[email protected]:AcmeCompany/FooLibrary.git" }, ]}

$ composer install

Page 4: Dependency management in Magento with Composer

… and howcomposer install

1. Available packages indexing2. Dependency tree and packages list calculation3. Packages list locking (composer.lock file)4. Packages download (in vendor folder)5. Custom installers6. Autoload dump

Page 5: Dependency management in Magento with Composer

Benefits

Time saveCode reuseCode sharingEasy upgradesSame code usage

Page 6: Dependency management in Magento with Composer

Composer & MagentoThe 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/

Page 7: Dependency management in Magento with Composer

Composer & MagentoThe solution

1. Available packages indexing2. Dependency tree and packages list calculation3. Packages list locking (composer.lock file)4. Packages download (in vendor folder)5. Custom installers6. Autoload dump

Page 8: Dependency management in Magento with Composer

Magento Composer Installerby Magento Hackathon

github.com/magento-hackathon/magento-composer-installer

Page 9: Dependency management in Magento with Composer

Magento Composer InstallerInstall 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

Page 10: Dependency management in Magento with Composer

Magento Composer InstallerFiles mapping

There are several ways how the mapping from files in the package intothe Magento source is accomplished:

1. A mapping in the composer.json2. The MagentoConnect package.xml file3. The modman file (see )github.com/colinmollenhour/modman

Page 11: Dependency management in Magento with Composer

Magento Composer InstallerInstall a MagentoConnect module

http://packages.firegento.com/{ "require": { "connect20/locale_mage_community_it_it": "*" }, "repositories": [ { "type": "composer", "url": "http://packages.firegento.com" } ]}

Page 12: Dependency management in Magento with Composer

Magento Composer InstallerInstall 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... :(

Page 13: Dependency management in Magento with Composer

Magento Composer InstallerMake 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" } ],}

Page 14: Dependency management in Magento with Composer

Magento Composer InstallerMake a module installable with Composer

Files mapping (modman example)./modman

src app/code/local/AcmeCompany/ModuleNameetc/AcmeCompany_ModuleName.xml app/etc/modules/locale/it_IT/* app/locale/it_IT/

See for further info.github.com/colinmollenhour/modman

Page 15: Dependency management in Magento with Composer

Magento Composer InstallerUseful extras…

Deploy strategy (magento-deploystrategy)Auto append to gitignore (auto-append-gitignore)Mapping overwrite (magento-map-overwrite)

Page 16: Dependency management in Magento with Composer

Joind.injoind.in/talk/view/12698

Any Question?

WebgriffeTailored Digital Works

| webgriffe.com @webgriffe5+ Years of Experience with Magento5 Certified Developers (Zend & Magento)350+ Customers20+ Magento Extensions450+ Extensions Sold

Page 17: Dependency management in Magento with Composer

Thank you!