Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TYPO3 & Composer

TYPO3 & Composer

Avatar for Armin Vieweg

Armin Vieweg

November 19, 2014
Tweet

More Decks by Armin Vieweg

Other Decks in Programming

Transcript

  1. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 What is Composer?

    is a Dependency Manager for PHP written in PHP URL: https://getcomposer.org
  2. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 What does Composer

    do? ❖ Loads source code (packages) from different locations to your project ❖ Central composer repository: https://packagist.org/ ❖ Composer ♥ JSON
  3. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 First steps in

    Composer 1. Download composer: curl -sS https://getcomposer.org/installer | php 2. Call composer like this: ./composer.phar create-project typo3/flow >> Downloads TYPO3 Flow with all dependencies
  4. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 What Composer also

    can do for you ❖ Composer puts packages per default to folder “vendor” ❖ API existing to write own plugins ➢ Hooks/Events for every part of composer ➢ Move packages from vendor folder to own destination ❖ Create own packages
  5. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 Composer’s advantages ❖

    No code redundancy ❖ Easy to maintain (updates) ❖ Very flexible ❖ Standard for PHP dependency management
  6. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 How to handle

    T3 extensions in VCS? ❖ Just check them in, like any other code ➢ Standard extensions like realurl, powermail or dce ;-) are located in several repositories at the same time ➢ Probably in different versions ➢ Very costly to keep them up to date ➢ Extrem high redundancy
  7. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 How to handle

    T3 extensions in VCS? ❖ Use SVN externals ➢ No redundancy anymore ➢ But not all extensions got a SVN repository ➢ So we had to create our own SVN repository for extensions we were using in several projects ▪ Also very costly, because each new extension or version of an extension needs to get imported to SVN
  8. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 Composer for TYPO3

    ❖ Works with all VCS like Git, SVN or Mercurial ❖ Requirements: ➢ A composer.json file in root of your TYPO3 project ➢ Possibility to run composer (on server or locally) ❖ URL: http://composer.typo3.org
  9. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 composer.json { "repositories":

    [ { "type": "composer", "url": "http://composer.typo3.org/" }, { "type": "composer", "url": "http://user:[email protected]/" } ],
  10. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 composer.json "replace": {

    "typo3/cms": "*" }, "require": { "typo3/cms-composer-installers": "*", "typo3-ter/realurl": "1.12.*", "typo3-ter/nc-staticfilecache": "2.5.1", "sunzinet/gridelements": "3.0.0", "sunzinet/t3ddy": "0.2.0", "sunzinet/sz_nc_staticfilecache": "0.4.2" } }
  11. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 composer.json parts 1.

    Repositories ➢ List of composer repositories (with T3 extensions) 2. Replace ➢ Optional. Disables download of TYPO3 itself 3. Require ➢ Defines which extensions should be included to your project. Underscores in extkeys become minus!
  12. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 Run composer ./composer.phar

    install ❖ Composer downloads all extensions ❖ Moves them from vendor/ to typo3conf/ext/ ➢ Because of hook which is also provided by TYPO3 Composer Repository ❖ vendor/ folder may get deleted manually
  13. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 How to update

    extensions? ❖ Just change version number in composer.json ❖ Or add/remove extensions ❖ Perform Composer update: ./composer.phar update
  14. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 Known issues ❖

    Bugtracker in forge (9 bugs, 3 features, 2 tasks open) ❖ Extensions with sysext dependencies fail ➢ Because the sysext is not located in repository ➢ gridelements is such an extension ➢ And all extensions based on gridelements (like t3ddy) ➢ Ticket in forge: 60950
  15. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 How to get

    your own Composer repo ❖ Composer repositories are also just JSON files ❖ Located under: domain.com/packages.json ❖ It contains packages ❖ and different versions for each package
  16. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 Composer and Git

    ❖ In .gitignore you should exclude some stuff: /composer.lock /composer.phar /vendor /vendor/** /typo3conf/ext/** !/typo3conf/ext/your_own_extension !/typo3conf/ext/your_own_extension/**
  17. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 .htaccess improvements ❖

    In .htaccess you should also exclude access to: # Deny direct access to several files RewriteCond %{REQUEST_URI} ^/typo3_src [OR] RewriteCond %{REQUEST_URI} ^/composer.json [OR] RewriteCond %{REQUEST_URI} ^/composer.lock [OR] RewriteCond %{REQUEST_URI} ^/.gitignore [OR] RewriteCond %{REQUEST_URI} ^/.gitattributes [OR] RewriteCond %{REQUEST_URI} ^/phpci.yml RewriteRule .* / [L,R=301]
  18. Armin Rüdiger Vieweg | @Twitter | 19.11.2014 ❖ Continuous Integration

    based on PHP ➢ Automated code checks: ▪ PhpLoc, Mass Detector, Code Sniffer, PhpUnit ➢ Composer support ▪ Execution after code checks ➢ Creation of deployable archives ➢ Report state of build back to Git GUI URL: https://www.phptesting.org/