of 25 /25

Composer und TYPO3

Embed Size (px)

Text of Composer und TYPO3

  • 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 fr dasAbhngigkeitsmanagement

    in PHP.

    Es erlaubt die Angabe von Abhngigkeiten zu anderen Bibliotheken, die in einem Projekt bentigt werden,

    und installiert diese in das Projekt.

  • Und was bedeutet das jetzt?

  • Warum Dependency Management?

    Abhngigkeiten

    Frameworks (Zend Framework, Symphony)

    API Clients

    TYPO3 Extensions

    Wiederverwendung von Code

    Rauslsen 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

    Qualittskontrolle bei pear.php.net

    Coding Standards

    RFCs

    Aufsetzen einen PEAR Channels ist zeitaufwendig und nicht einfach genug

    http://pear.php.net

  • Warum also Composer?

    Installation von Paketen auf Projektebene

    Die Konfiguration ist im Repository

    gleiche Version bei jedem Entwickler

    Abhngigkeiten sind an zentraler Stelle dokumentiert

    Source Code aus kann aus diversen Quellen geladen werden

    Zentrales Composer Repository: packagist.org

    Composer JSON

    http://packagist.org

  • Historie

    Start: April 2011

    Erste Verffentlichung: 1. Mrz 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 fr Packagist

  • globale Installation:

    ! Composer bentigt 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 Abhngigkeiten - ffentliche Abhngigkeiten - Metadaten

    git svn mercurial

    Packagist.org github.com

  • composer.json

    Meta Daten

    Konfiguration

    Abhngigkeiten

    Entwicklungsabhngigkeiten

    { "repositories": [ { "type": "vcs", "url": "https://github.com/peterkraume/demo_fsc" }

    ], "require": { "kws/demo-fsc": "1.0.2" } }

  • Abhngigkeiten 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 Abhngigkeiten

    alle Projektbeteiligten bekommen exakt die gleichen Versionen

    composer.json und composer.lock sollten versioniert werden

  • Weitere Befehle

    update aktualisiert die Abhngigkeiten auf die neuste Version unter Bercksichtigung der composer.json und aktualisiert composer.lock

    validate berprft 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 Abhngigkeiten

  • packagist.org

    registrierte Pakete

    84.395

    verfgbare 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 mglich

    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 verfgbar

    Unterstriche mssen durch Bindestriche ersetzt werden

    Wenn TYPO3 per Composer installiert wurde, ist der Download von Extensions nur per Composer mglich

    Trotzdem mssen 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 verfgbaren Extensionshttps://composer.typo3.org/satis.html

    https://wiki.typo3.org/Composer

    Erklrung der Versions Einschrnkungenhttps://getcomposer.org/doc/articles/versions.md

    https://getcomposer.org/https://packagist.org/https://composer.typo3.org/https://composer.typo3.org/satis.htmlhttps://wiki.typo3.org/Composerhttps://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.

    http://creativecommons.org/licenses/by-sa/4.0/