Der composer

Letzte Änderung:

Was macht der composer?

Der composer ist ein sog. dependency manager Tool für PHP-Anwendungen. Konkret

  1. installiert man mit composer eine PHP-Software automatisch mit samt der für die jeweilige Version notwendigen Funktionsbibliotheken. 
  2. aktualisiert ("Update") man eine Software unter Berücksichtigung der Abhängigkeiten, d.h. ggf. werden auch die Funktionsbibliotheken auf eine kompatible Version aktualisiert

Zentrale Datei ist die composer.json. Sie listet alle Abhängigkeiten einer Software auf.

Die Installation einer TYPO3 Minimalversion 11 erzeugt z.B. folgende composer.json:

 

{
    "require": {
        "typo3/cms-backend": "^11.5",
        "typo3/cms-core": "^11.5",
        "typo3/cms-extbase": "^11.5",
        "typo3/cms-extensionmanager": "^11.5",
        "typo3/cms-filelist": "^11.5",
        "typo3/cms-fluid": "^11.5",
        "typo3/cms-frontend": "^11.5",
        "typo3/cms-install": "^11.5",
        "typo3/cms-recordlist": "^11.5"
    }
}

 

Der Befehl zur erstmaligen Installation lautet:

 

composer require "typo3/cms-backend:^11.5" "typo3/cms-core:^11.5" "typo3/cms-extbase:^11.5" "typo3/cms-extensionmanager:^11.5" "typo3/cms-filelist:^11.5" "typo3/cms-fluid:^11.5" "typo3/cms-frontend:^11.5" "typo3/cms-install:^11.5" "typo3/cms-recordlist:^11.5"

 

Woher bekommt der composer die zu installierende Software?

Standardmäßig holt sich der composer die erforderlichen Dateien von packagist.org. Alternativ besteht die Möglichkeit, in der composer.json eine andere Quelle("Repository") anzugeben.

Beispiel für ein lokales Respository.:

 

"repositories": {
     "myextension": {
             "type": "path",
             "url": "./myprojects/myextension"
           }
}

 

Mit der Installation wird auch eine Datei composer.lock erzeugt und bei jedem Update aktualisiert. Sie enthält für alle Pakete die genauen Versionsnummern, die gerade eingesetzt werden. Damit können andere Entwickler sehen, auf welcher genauen technischen Basis die Software bereitgestellt wird (z.B. im git).

composer.json für TYPO3 Extensions

Für TYPO3 Extensions muss eine composer.json mit mindestens den folgenden Angaben vorliegen:

 

{
    "name": "myorganisation/mytemplate",
    "description": "Template",
    "type": "typo3-cms-extension",
    "license": "GPL-2.0-or-later",
    "version": "1.0.0",
    "authors": [{
        "name": "My Name",
        "email": "me@myhome.com"
    }],
    "require": {
        "typo3/cms-fluid-styled-content": "^11.5"
    },
    "extra": {
        "typo3/cms": {
            "extension-key": "extensionkey"
        }
}

 

Genaure Informationen zu den einzelnen Feldern finden Sie auf der offiziellen TYPO3-Seite zur composer.json.

Wichtige composer-Befehle im TYPO3 Umfeld

Installation einer Extension:

 

composer require vendor/name

 

Entfernen einer Extension:

 

composer remove vendor/name

 

Update einer Extension inkl. deren Abhängigkeiten:

 

composer update vendor/name -W

 

Update TYPO3 Core:

 

composer update typo3/cms-* -W

 

Abfrage, welche Komponenten veraltet sind:

 

composer outdated -D