TYPO3 & Composer

28
Armin Rüdiger Vieweg | @Twitter | 19.11.2014 and Composer Photo: arianta@flickr

description

How Composer helps you to manage TYPO3 extensions in your projects.

Transcript of TYPO3 & Composer

Page 1: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

and Composer

Photo: arianta@flickr

Page 2: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

Composer in general

Page 3: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

What is Composer?

is a Dependency Manager for PHPwritten in PHP

URL: https://getcomposer.org

Page 4: TYPO3 & Composer

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

Page 5: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

Example of a composer package:TYPO3 Flow

Page 6: TYPO3 & Composer

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

Page 7: TYPO3 & Composer

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

Page 8: TYPO3 & Composer

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

Page 9: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

How to handle TYPO3 extensions in VCS?

Page 10: TYPO3 & Composer

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

Page 11: TYPO3 & Composer

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

Page 12: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

Composer for TYPO3

Page 13: TYPO3 & Composer

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

Page 14: TYPO3 & Composer

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]/"}

],

Page 15: TYPO3 & Composer

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"

}

}

Page 16: TYPO3 & Composer

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!

Page 17: TYPO3 & Composer

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

Page 18: TYPO3 & Composer

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

Page 19: TYPO3 & Composer

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

Page 20: TYPO3 & Composer

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

Page 21: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

packages.json example

Page 22: TYPO3 & Composer

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/**

Page 23: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

.htaccess improvements

❖ In .htaccess you should also exclude access to:# Deny direct access to several filesRewriteCond %{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.ymlRewriteRule .* / [L,R=301]

Page 24: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

PHPCI, Composer andTYPO3

Page 25: TYPO3 & Composer

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/

Page 26: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

Page 27: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014

Questions?

Photo: an_untrained_eye@flickr

Page 28: TYPO3 & Composer

Armin Rüdiger Vieweg | @Twitter | 19.11.2014Photo: winstonavich@flickr

Thank you!

POWERED BY