SlideShare ist ein Scribd-Unternehmen logo
Composer und TYPO3
TYPO3Munich User Group
2. Februar 2016
Peter Kraume
Senior TYPO3 Developer
Twitter: @cybersmog
Mail: peter.kraume@bgm-gmbh.de
Slides: http://de.slideshare.net/pk77/
Composer ist ein Tool für
das Abhängigkeitsmanagement
in PHP.
Es erlaubt die Angabe von Abhängigkeiten zu anderen
Bibliotheken, die in einem Projekt benötigt werden,
und installiert diese in das Projekt.
Und was bedeutet das jetzt?
Warum Dependency Management?
• Abhängigkeiten
• Frameworks (Zend Framework, Symphony)
• API Clients
• TYPO3 Extensions
• Wiederverwendung von Code
• Rauslösen von wiederverwendbarem Code
• viele kleine Code Bibliotheken
• Das Rad nicht immer neu erfinden
Warum nicht PEAR verwenden?
• globale Installation von Paketen
• schwierige Kontrolle der Paketversionen im Projekt
• Qualitätskontrolle bei pear.php.net
• Coding Standards
• RFCs
• Aufsetzen einen PEAR Channels ist zeitaufwendig und nicht einfach
genug
Warum also Composer?
✓ Installation von Paketen auf Projektebene
✓ Die Konfiguration ist im Repository
✓ gleiche Version bei jedem Entwickler
✓ Abhängigkeiten sind an zentraler Stelle dokumentiert
✓ Source Code aus kann aus diversen Quellen geladen werden
✓ Zentrales Composer Repository: packagist.org
✓ Composer ♥ JSON
Historie
✓ Start: April 2011
✓ Erste Veröffentlichung: 1. März 2012
✓ 100% PHP
✓ Inspiriert von npm (node.js) und bundler (Ruby)
✓ Wurzeln in der Symfony2 Community
✓ > 80.000 Pakete auf Packagist registriert
✓ GitHub Service Hook für Packagist
globale Installation:
! Composer benötigt PHP 5.3.2+
Installation von Composer
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
Beispiel domainfactory:
Eintrag in .bashrc oder .zshrc
Installation bei Shared Hosting
$ curl -sS https://getcomposer.org/installer | 
/usr/local/bin/php5-56STABLE-CLI
alias composer="/usr/local/bin/php5-56STABLE-CLI 
/kompletter/pfad/zur/composer.phar"
Wie funktioniert Composer?
Icons: Ryan Beck, Kirill Ulitin & Pieter J. Smits from the Noun Project
composer.json
- interne Abhängigkeiten
- öffentliche Abhängigkeiten
- Metadaten
git
svn
mercurial
Packagist.org
github.com
composer.json
✓ Meta Daten
✓ Konfiguration
✓ Abhängigkeiten
✓ Entwicklungsabhängigkeiten
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/peterkraume/demo_fsc"
}
],
"require": {
"kws/demo-fsc": "1.0.2"
}
}
Abhängigkeiten installieren
$ composer install
Verzeichnisinhalt nach der Installation
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│ ├── autoload_classmap.php
│ ├── autoload_namespaces.php
│ ├── autoload_psr4.php
│ ├── autoload_real.php
│ ├── ClassLoader.php
│ ├── installed.json
│ └── LICENSE
└── kws
└── demo-fsc
composer.lock
✓ speichert die genauen Versionen der installierten Abhängigkeiten
✓ alle Projektbeteiligten bekommen exakt die gleichen Versionen
✓ composer.json und composer.lock sollten versioniert werden
Weitere Befehle
update aktualisiert die Abhängigkeiten auf die neuste Version

unter Berücksichtigung der composer.json und

aktualisiert composer.lock
validate überprüft composer.json und composer.lock
self-update aktualisiert composer.phar auf die neueste Version
show -i -t zeigt einen Baum aller installierten Pakete und deren

Abhängigkeiten
packagist.org
✓ registrierte Pakete
✓ 84.395
✓ verfügbare Versionen
✓ 426.883
✓ installierte Pakete
✓ 1.582.775.135

(seit 13.04.2012)
TYPO3 mit Composer installieren
Neueste TYPO3 Version installieren:
Aktuellen dev-master installieren:
Vorteile:
✓ Es geht schnell!
✓ Extension Download auf der Kommandozeile möglich
✓ Es gibt einen web/ Ordner
$ composer create-project typo3/cms-base-distribution ZielVerzeichnis
$ composer create-project typo3/cms-base-distribution 
ZielVerzeichnis dev-master
Verzeichnisinhalt nach der Installation
MeinProjekt
├── composer.json
├── composer.lock
├── vendor
│ ├── autoload.php
│ ├── bin
│ ├── cogpowered
│ ├── composer
│ ├── doctrine
│ ├── mikey179
│ ├── pear
│ ├── phpdocumentor
│ ├── phpspec
│ ├── phpunit
│ ├── phpwhois
│ ├── psr
│ ├── sebastian
│ ├── swiftmailer
│ ├── symfony
│ └── typo3
└── web
├── index.php -> ../vendor/typo3/cms/index.php
└── typo3 -> ../vendor/typo3/cms/typo3
Extension mit Composer installieren
Extension installieren:
✓ Alle TER Extensions sind auch per Composer verfügbar
✓ Unterstriche müssen durch Bindestriche ersetzt werden
✓ Wenn TYPO3 per Composer installiert wurde, ist der Download von
Extensions nur per Composer möglich
✓ Trotzdem müssen die Extensions noch im Extension Manager aktiviert
werden!
$ cd MeinProjekt
$ composer require typo3-ter/news
Änderungen durch die Installation
✓ composer.json
✓ composer.lock
✓ web/typo3conf/ext/news
diff --git a/composer.json b/composer.json
index d1028e5..cc04477 100644
--- a/composer.json
+++ b/composer.json
@@ -6,7 +6,8 @@
"description" : "TYPO3 CMS Base Distribution",
"license": "GPL-2.0+",
"require": {
- "typo3/cms": "~7.6.0"
+ "typo3/cms": "~7.6.0",
+ "typo3-ter/news": "^4.1"
},
"require-dev": {
"mikey179/vfsStream": "1.4.*@dev",
Fragen ?
Links
✓ https://getcomposer.org/
✓ https://packagist.org/
✓ Generelle Infos über TYPO3 und Composer

https://composer.typo3.org/
✓ Liste der via Composer verfügbaren Extensions

https://composer.typo3.org/satis.html
✓ https://wiki.typo3.org/Composer
✓ Erklärung der Versions Einschränkungen

https://getcomposer.org/doc/articles/versions.md
Vielen Dank!
Twitter: @cybersmog
Mail: peter.kraume@bgm-gmbh.de
Slides: http://de.slideshare.net/pk77/
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Weitere ähnliche Inhalte

PPTX
Continuous Delivery
PPTX
DACH - Continuous delivery for Puppet Enterprise 08/09/2018
PDF
Agile Bodensee - Introducing Continuous Delivery
PPTX
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
PPTX
Tipps und Tricks im Umgang mit Docker
PPTX
Dev ops testautomatisierer bei Technosoft
PDF
Eine Stunde was mit Api First!
PDF
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Delivery
DACH - Continuous delivery for Puppet Enterprise 08/09/2018
Agile Bodensee - Introducing Continuous Delivery
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Tipps und Tricks im Umgang mit Docker
Dev ops testautomatisierer bei Technosoft
Eine Stunde was mit Api First!
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines

Was ist angesagt? (20)

PDF
Continous Deployment - Schneller entwickeln
PDF
Kaps - Continuous Deployment Roadmap
PDF
Kaps - Es muss nicht immer Kubernetes sein
PDF
DevOps - Mehr Geschwindigkeit auf der Schiene
PPT
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
PDF
Deployment 2.0
PDF
TYPO3 Monitoring mit t3monitoring
PDF
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
PDF
In den sicheren Hafen jax2020
PDF
systemd & Docker
PDF
Continuous Deployment mit Rex und Jenkins
PDF
TYPO3 Website Monitoring mit Caretaker
PPTX
Das Kung Fu des Code Reviews
PDF
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
PDF
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
PPTX
OpenNTF 2015 Edition
PDF
docker.io - Secure And Portable Containers Made Easy
PDF
Continuous Delivery - Aber Sicher?!
PPTX
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
PDF
Migration zum Zend Framework 3
Continous Deployment - Schneller entwickeln
Kaps - Continuous Deployment Roadmap
Kaps - Es muss nicht immer Kubernetes sein
DevOps - Mehr Geschwindigkeit auf der Schiene
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Deployment 2.0
TYPO3 Monitoring mit t3monitoring
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
In den sicheren Hafen jax2020
systemd & Docker
Continuous Deployment mit Rex und Jenkins
TYPO3 Website Monitoring mit Caretaker
Das Kung Fu des Code Reviews
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
OpenNTF 2015 Edition
docker.io - Secure And Portable Containers Made Easy
Continuous Delivery - Aber Sicher?!
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
Migration zum Zend Framework 3
Anzeige

Andere mochten auch (20)

PDF
Frontend Formulare in TYPO3 8 LTS
PDF
Build a typo3 website in an hour
PDF
Multi Language Websites with TYPO3 Neos
ODP
Rsyslog log normalization
PPTX
TYPO3 & Composer
PDF
Caretaker TYPO3 Monitoring
PDF
Umfragen mit TYPO3
PDF
WordPress - eigene Plugins erstellen
PDF
Chef Fundamentals Training Series Module 2: Workstation Setup
PDF
Q&A Session zur TYPO3 Association
PDF
How leadership of employees via Objectives and Key Results (OKR) speeds up th...
PDF
Innovationsmotoren für IoT - DWX 2016 - Pluswerk
PDF
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
PDF
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerk
PDF
4DX - Die 4 Disziplinen der Umsetzung: Strategien sicher umsetzen und Ziele e...
PDF
The agile enterprise - Digital Transformation as a practical application
KEY
Infrastructure Automation with Chef
PPSX
HP ArcSight
PDF
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...
PDF
Agile Mitarbeiterführung mit OKRs / Manage Agile 2017 / Berlin
Frontend Formulare in TYPO3 8 LTS
Build a typo3 website in an hour
Multi Language Websites with TYPO3 Neos
Rsyslog log normalization
TYPO3 & Composer
Caretaker TYPO3 Monitoring
Umfragen mit TYPO3
WordPress - eigene Plugins erstellen
Chef Fundamentals Training Series Module 2: Workstation Setup
Q&A Session zur TYPO3 Association
How leadership of employees via Objectives and Key Results (OKR) speeds up th...
Innovationsmotoren für IoT - DWX 2016 - Pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerk
4DX - Die 4 Disziplinen der Umsetzung: Strategien sicher umsetzen und Ziele e...
The agile enterprise - Digital Transformation as a practical application
Infrastructure Automation with Chef
HP ArcSight
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...
Agile Mitarbeiterführung mit OKRs / Manage Agile 2017 / Berlin
Anzeige

Mehr von Peter Kraume (6)

PDF
Lokale TYPO3 Entwicklungsumgebung mit DDEV
PDF
Formulare in TYPO3 8.7 LTS
PDF
Get happy Editors with a suitable TYPO3 Backend Configuration
PDF
TYPO3 best practice - showing a useful TYPO3 backend
PDF
What’s new for TYPO3 Editors and in the TYPO3 World
PDF
TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Formulare in TYPO3 8.7 LTS
Get happy Editors with a suitable TYPO3 Backend Configuration
TYPO3 best practice - showing a useful TYPO3 backend
What’s new for TYPO3 Editors and in the TYPO3 World
TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Composer und TYPO3

  • 3. Peter Kraume Senior TYPO3 Developer Twitter: @cybersmog Mail: peter.kraume@bgm-gmbh.de Slides: http://de.slideshare.net/pk77/
  • 4. Composer ist ein Tool für das Abhängigkeitsmanagement in PHP. Es erlaubt die Angabe von Abhängigkeiten zu anderen Bibliotheken, die in einem Projekt benötigt werden, und installiert diese in das Projekt.
  • 5. Und was bedeutet das jetzt?
  • 6. Warum Dependency Management? • Abhängigkeiten • Frameworks (Zend Framework, Symphony) • API Clients • TYPO3 Extensions • Wiederverwendung von Code • Rauslösen von wiederverwendbarem Code • viele kleine Code Bibliotheken • Das Rad nicht immer neu erfinden
  • 7. Warum nicht PEAR verwenden? • globale Installation von Paketen • schwierige Kontrolle der Paketversionen im Projekt • Qualitätskontrolle bei pear.php.net • Coding Standards • RFCs • Aufsetzen einen PEAR Channels ist zeitaufwendig und nicht einfach genug
  • 8. Warum also Composer? ✓ Installation von Paketen auf Projektebene ✓ Die Konfiguration ist im Repository ✓ gleiche Version bei jedem Entwickler ✓ Abhängigkeiten sind an zentraler Stelle dokumentiert ✓ Source Code aus kann aus diversen Quellen geladen werden ✓ Zentrales Composer Repository: packagist.org ✓ Composer ♥ JSON
  • 9. Historie ✓ Start: April 2011 ✓ Erste Veröffentlichung: 1. März 2012 ✓ 100% PHP ✓ Inspiriert von npm (node.js) und bundler (Ruby) ✓ Wurzeln in der Symfony2 Community ✓ > 80.000 Pakete auf Packagist registriert ✓ GitHub Service Hook für Packagist
  • 10. globale Installation: ! Composer benötigt PHP 5.3.2+ Installation von Composer $ curl -sS https://getcomposer.org/installer | php $ mv composer.phar /usr/local/bin/composer
  • 11. Beispiel domainfactory: Eintrag in .bashrc oder .zshrc Installation bei Shared Hosting $ curl -sS https://getcomposer.org/installer | /usr/local/bin/php5-56STABLE-CLI alias composer="/usr/local/bin/php5-56STABLE-CLI /kompletter/pfad/zur/composer.phar"
  • 12. Wie funktioniert Composer? Icons: Ryan Beck, Kirill Ulitin & Pieter J. Smits from the Noun Project composer.json - interne Abhängigkeiten - öffentliche Abhängigkeiten - Metadaten git svn mercurial Packagist.org github.com
  • 13. composer.json ✓ Meta Daten ✓ Konfiguration ✓ Abhängigkeiten ✓ Entwicklungsabhängigkeiten { "repositories": [ { "type": "vcs", "url": "https://github.com/peterkraume/demo_fsc" } ], "require": { "kws/demo-fsc": "1.0.2" } }
  • 15. Verzeichnisinhalt nach der Installation ├── composer.json ├── composer.lock └── vendor ├── autoload.php ├── composer │ ├── autoload_classmap.php │ ├── autoload_namespaces.php │ ├── autoload_psr4.php │ ├── autoload_real.php │ ├── ClassLoader.php │ ├── installed.json │ └── LICENSE └── kws └── demo-fsc
  • 16. composer.lock ✓ speichert die genauen Versionen der installierten Abhängigkeiten ✓ alle Projektbeteiligten bekommen exakt die gleichen Versionen ✓ composer.json und composer.lock sollten versioniert werden
  • 17. Weitere Befehle update aktualisiert die Abhängigkeiten auf die neuste Version
 unter Berücksichtigung der composer.json und
 aktualisiert composer.lock validate überprüft composer.json und composer.lock self-update aktualisiert composer.phar auf die neueste Version show -i -t zeigt einen Baum aller installierten Pakete und deren
 Abhängigkeiten
  • 18. packagist.org ✓ registrierte Pakete ✓ 84.395 ✓ verfügbare Versionen ✓ 426.883 ✓ installierte Pakete ✓ 1.582.775.135
 (seit 13.04.2012)
  • 19. TYPO3 mit Composer installieren Neueste TYPO3 Version installieren: Aktuellen dev-master installieren: Vorteile: ✓ Es geht schnell! ✓ Extension Download auf der Kommandozeile möglich ✓ Es gibt einen web/ Ordner $ composer create-project typo3/cms-base-distribution ZielVerzeichnis $ composer create-project typo3/cms-base-distribution ZielVerzeichnis dev-master
  • 20. Verzeichnisinhalt nach der Installation MeinProjekt ├── composer.json ├── composer.lock ├── vendor │ ├── autoload.php │ ├── bin │ ├── cogpowered │ ├── composer │ ├── doctrine │ ├── mikey179 │ ├── pear │ ├── phpdocumentor │ ├── phpspec │ ├── phpunit │ ├── phpwhois │ ├── psr │ ├── sebastian │ ├── swiftmailer │ ├── symfony │ └── typo3 └── web ├── index.php -> ../vendor/typo3/cms/index.php └── typo3 -> ../vendor/typo3/cms/typo3
  • 21. Extension mit Composer installieren Extension installieren: ✓ Alle TER Extensions sind auch per Composer verfügbar ✓ Unterstriche müssen durch Bindestriche ersetzt werden ✓ Wenn TYPO3 per Composer installiert wurde, ist der Download von Extensions nur per Composer möglich ✓ Trotzdem müssen die Extensions noch im Extension Manager aktiviert werden! $ cd MeinProjekt $ composer require typo3-ter/news
  • 22. Änderungen durch die Installation ✓ composer.json ✓ composer.lock ✓ web/typo3conf/ext/news diff --git a/composer.json b/composer.json index d1028e5..cc04477 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,8 @@ "description" : "TYPO3 CMS Base Distribution", "license": "GPL-2.0+", "require": { - "typo3/cms": "~7.6.0" + "typo3/cms": "~7.6.0", + "typo3-ter/news": "^4.1" }, "require-dev": { "mikey179/vfsStream": "1.4.*@dev",
  • 24. Links ✓ https://getcomposer.org/ ✓ https://packagist.org/ ✓ Generelle Infos über TYPO3 und Composer
 https://composer.typo3.org/ ✓ Liste der via Composer verfügbaren Extensions
 https://composer.typo3.org/satis.html ✓ https://wiki.typo3.org/Composer ✓ Erklärung der Versions Einschränkungen
 https://getcomposer.org/doc/articles/versions.md
  • 25. Vielen Dank! Twitter: @cybersmog Mail: peter.kraume@bgm-gmbh.de Slides: http://de.slideshare.net/pk77/ This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.