Slide 1

Slide 1 text

MagentoWA meetup - 23 July Erfan Imani - @erfanimani Modern tools for Magento development

Slide 2

Slide 2 text

N98 Magerun ● PHP script that you execute through CLI

Slide 3

Slide 3 text

N98 Magerun ● PHP script that you execute through CLI ● Tons of useful commands ○ sys:check ○ dev:console ○ admin:user:create

Slide 4

Slide 4 text

N98 Magerun ● sys:setup:compare-versions ● sys:maintenance ● sys:setup:run ● cache:clean ● sys:mainenance

Slide 5

Slide 5 text

Modman (Module Manager) Allows you to clone a repository with Magento module files and have them be mapped to the Magento filesystem

Slide 6

Slide 6 text

Modman (Module Manager) ● Files are symlinked ○ (as per `modman` file that’s in the projects repo) ● Example: github repo link

Slide 7

Slide 7 text

Modman (Module Manager) ● Files are symlinked ○ (as per `modman` file that’s in the projects repo) ● Example: github repo link ● Not really a package or dependency management tool ○ Not quite sure what it’s good for (if you’re using VCS…)

Slide 8

Slide 8 text

Composer ● dependency manager for PHP projects ○ allows you to declare the libraries your project needs ○ packagist.org is composer main archive ■ packagist doesn’t host the actual files, it just links to them http://alanstorm.com/php_composer_magento_tutorial

Slide 9

Slide 9 text

Dependency management basics ● file that states what the project needs ○ In vcs, editable ○ composer.json (e.g. lib-x: 1.0.*)

Slide 10

Slide 10 text

Dependency management basics ● file that states what the project needs ○ In vcs, editable ○ composer.json (e.g. lib-x: 1.0.*) ● file that states what the project currently has ○ In vcs, auto generated ○ composer.lock (e.g. lib-x: 1.0.9)

Slide 11

Slide 11 text

Dependency management basics ● directory that contains the files you need ○ Can be in vcs, auto generated ○ vendor

Slide 12

Slide 12 text

Dependency management basics ● lock file gets generated by running `composer update` ○ grabs newest versions

Slide 13

Slide 13 text

Dependency management basics ● lock file gets generated by running `composer update` ○ grabs newest versions ● if there is a lock file present, you can install all modules by running `composer install` ○ installs versions as specified in composer.lock, even though there may be newer versions available!

Slide 14

Slide 14 text

How does this work with Magento’s filesystem?

Slide 15

Slide 15 text

{ "name": "doghouse/tumblr-share-link", "type": "magento-module", "license":"OSL-3.0", "homepage":"http://stash.dhmedia.com.au/projects/DMMODULES/repos/tumblrsharelink-magento-2014", "description":"Generate Tumblr link and photo share URLs", "authors":[ { "name":"Erfan Imani", "email":"[email protected]" } ], "require": { "magento-hackathon/magento-composer-installer": "*" }, "extra": { "map": [ ["Doghouse_TumblrShareLink.xml", "app/etc/modules/Doghouse_TumblrShareLink.xml"], ["TumblrShareLink", "app/code/community/Doghouse/TumblrShareLink"] ] } }

Slide 16

Slide 16 text

{ "..." "extra": { "map": [ ["Doghouse_TumblrShareLink.xml", "app/etc/modules/Doghouse_TumblrShareLink.xml"], ["TumblrShareLink", "app/code/community/Doghouse/TumblrShareLink"] ] } }

Slide 17

Slide 17 text

{ "minimum-stability":"dev", "require": { "magento-hackathon/magento-composer-installer":"*", "fbrnc/aoe_scheduler":"*", "fbrnc/aoe_profiler":"*" }, "repositories": [ { "packagist": false }, { "type": "composer", "url": "http://packages.firegento.com" } ], "extra": { "magento-root-dir": "./", "magento-deploystrategy": "copy", "magento-force": true } } http://blog.versioneye.com/2014/07/22/intro-to-firegento/

Slide 18

Slide 18 text

{ "..." "extra": { "magento-root-dir": "./", "magento-deploystrategy": "copy", "magento-force": true } }

Slide 19

Slide 19 text

Magento & Composer with VCS Method #1 ● symlink, vendor not version controlled ○ when cloning the project, you have to install all dependencies ○ deployment system becomes responsible for fetching all dependencies

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

1. “You’re reliant on the npm infrastructure being up and working when you need it (it won’t always be, as was so clearly demonstrated on Feburary 27th... and in January... and November... and etc...). 2. You’re assuming nobody will subvert the repository and insert malicious code (not as far-fetched as it sounds—it happened to Ruby). 3. You’re relying on npm to serve the exact bug-for-bug compatible version of the code that you originally developed and tested against, including all subdependencies(which it doesn’t, not without special effort). 4. You’re trusting that the online repository will remain available and serving the exact packages you need for the rest of your application’s life, which could be decades.“ http://www.letscodejavascript. com/v3/blog/2014/03/the_npm_debacle

Slide 22

Slide 22 text

Magento & Composer with VCS Method #2 ● symlink, vendor in VCS ○ you might need to add them as git submodules http://www.lornajane.net/posts/2014/using-composer-without- gitignoring

Slide 23

Slide 23 text

Magento & Composer with VCS Method #3 ● copy, vendor not version controlled ○ you can see a diff when you update modules ○ you don’t have to run composer install to have a project work ○ deployments run smooth, even if certain repo’ s aren’t available ○ disadvantage: files are now in two places

Slide 24

Slide 24 text

Next... ● Satis ● Bower ● Sass/Compass (and Bundler) ● Grunt