TYPO3 & Composer
-
Upload
armin-vieweg -
Category
Internet
-
view
930 -
download
8
description
Transcript of TYPO3 & Composer
![Page 1: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/1.jpg)
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
and Composer
Photo: arianta@flickr
![Page 3: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/5.jpg)
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
Example of a composer package:TYPO3 Flow
![Page 6: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/9.jpg)
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
How to handle TYPO3 extensions in VCS?
![Page 10: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/11.jpg)
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 13: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/20.jpg)
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 22: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/24.jpg)
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
PHPCI, Composer andTYPO3
![Page 25: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/25.jpg)
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 27: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/27.jpg)
Armin Rüdiger Vieweg | @Twitter | 19.11.2014
Questions?
Photo: an_untrained_eye@flickr
![Page 28: TYPO3 & Composer](https://reader034.fdocuments.net/reader034/viewer/2022042512/559441ec1a28abfa2f8b4580/html5/thumbnails/28.jpg)
Armin Rüdiger Vieweg | @Twitter | 19.11.2014Photo: winstonavich@flickr
Thank you!
POWERED BY