of 25 /25

Composer und TYPO3

Embed Size (px)

Citation preview

TYPO3Munich User Group

2. Februar 2016

Peter Kraume Senior TYPO3 Developer

Twitter: @cybersmog Mail: [email protected] 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 Composerhttps://composer.typo3.org/

✓ Liste der via Composer verfügbaren Extensionshttps://composer.typo3.org/satis.html

✓ https://wiki.typo3.org/Composer

✓ Erklärung der Versions Einschränkungenhttps://getcomposer.org/doc/articles/versions.md

Vielen Dank!

Twitter: @cybersmog Mail: [email protected] Slides: http://de.slideshare.net/pk77/

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.