Zum Hauptinhalt springen

TYPO3 Composer minimal - oder wo sind die Standard Module?

Erstellt von Onur Güngören | | entwicklungphptypo3

TYPO3 Installation in Ausführung minimal bringt ein paar Überraschungen mit sich.

Möchte man sich die letzte TYPO3 LTS Version auf https://get.typo3.org/version/9 herunterlanden ist die erste Option die Installation per Composer. Kurzer Exkurs für alle die ggfs. nicht wissen was Composer ist:

Composer ist ein "Paketmanager" geschrieben in PHP für das PHP Ökosystem. Es dient zu allererst dazu Abhängigkeiten in Projekten zu verwalten, aufzulösen und bereit zu stellen. Die Prinzipien sind vergleichbar mit zum Beispiel

  • https://www.npmjs.com/ - Der Paketmanager für Node.js
  • https://maven.apache.org/ - Maven ist weit verbreitet im Java Sektor und vermutlich der De-Facto Standard. Maven kann noch "etwas" mehr als nur Abhängigkeiten auflösen, aber darum soll es hier nicht gehen.

Wofür verwende ich Composer jetzt eigentlich? Nehmen wir uns hier ein einfaches Beispiel:


Ich setze ein Formular um, dieses soll nachdem abschicken eine E-Mail verschicken. Sofern mal eigentlich nur etwas Text an eine vordefinierte Adresse versenden möchte, reicht wohlmöglich die `mail_send` Funktion von PHP aus, doch was ist, wenn ich mehr möchte? HTML E-Mail, Anhänge, etc. Dann habe ich zwei Möglichkeiten:

  1. Ich schreibe alles selber. Viel Spass beim lesen der RFC für E-Mails.
  2. Ich nutze eine fertige, erprobte Bibliothek. Als erstes fällt mir hier dann https://swiftmailer.symfony.com/ ein.

Entscheidung ist in diesem Fall einfach: Wir nehmen Option 2. Doch wie binde ich die Bibliothek jetzt in mein Projekt ein? Ich könnte das Projekt von der Github Seite herunterladen, irgendwo in meinem Projekt entpacken und dann per require_once inkludieren. Ein einfaches composer require swiftmailer/swiftmailer finde ich aber sympathischer. Composer lädt jetzt das Projekt runter, erstellt eine autoload.php welche PSR-4 konform ist und ich kann Swiftmailer ohne weiteres in meinem Projekt verwenden.

Das Beispiel scheint jetzt trivial, aber wie oft schreiben wir wirklich trivialen Code? Software hat Abhängigkeiten und grosse Projekte haben sogar noch mehr davon. Daher hat sich das TYPO3 Team für Composer entschieden.

Schauen wir uns jetzt den Beispiel Code ein, damit wir das Projekt initilasieren können fällt uns vielleicht etwas auf composer require typo3/minimal. Da steht was von minimal, machen wir uns keine weiteren Gedanken erstmal, gehen die Installation durch, loggen uns ein und sehen dann? Ein wirklich minimales TYPO3. Kein Listen Modul, Recycler, Info - nichts. Ich bin ehrlich: Ich war erst verwirrt. Nicht mal das Template Modul wird installiert. Über den Extensionmanager im Backend kann man nichts mehr installieren, wenn man sich für den Composer Weg entschieden hat. Doch wo bekomme ich die anderen Module her?

Google gefragt, ich war davon ausgegangen das TYPO3 Team hat die Standardmodule irgendwo gelistet. Leider nein. Ich wundere mich etwas über das Vorgehen oder habe einfach nur was übersehen, aber dank der Namenskonvention der TYPO3 Standard Pakete kann man die nötigen über https://packagist.org/ ausfindig machen. Sucht einfach nach typo3 cms- - man bekommt zwar noch Fremdpakete so, aber alles aus dem Core hat den Namespace typo3/cms-.

Ein gutes minimal Konstrukt sieht für mich so aus

{
    "require": {
        "typo3/minimal": "^9.5",
        "friendsoftypo3/extension-builder": "^9.10",
        "typo3/cms-tstemplate": "^9.5",
        "typo3/cms-fluid-styled-content": "^9.5",
        "georgringer/news": "^7.0",
        "typo3/cms-info": "^9.5",
        "typo3/cms-form": "^9.5"
    }
}

Der Composer Ansatz ist gut, das Arbeiten damit macht Spass. Aber vielleicht sollte man das "minimal" etwas "maximaler" gestalten.

Zurück