Upload
armin-vieweg
View
927
Download
8
Embed Size (px)
DESCRIPTION
How Composer helps you to manage TYPO3 extensions in your projects.
Citation preview
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
and Composer
Photo: arianta@flickr
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
What is Composer?
is a Dependency Manager for PHPwritten in PHP
URL: https://getcomposer.org
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
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
Example of a composer package:TYPO3 Flow
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
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
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
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
How to handle TYPO3 extensions in VCS?
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
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
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
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]/"}
],
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"
}
}
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!
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
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
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
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
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/**
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]
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
PHPCI, Composer andTYPO3
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/
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
Questions?
Photo: an_untrained_eye@flickr
Armin Rüdiger Vieweg | @Twitter | 19.11.2014Photo: winstonavich@flickr
Thank you!
POWERED BY