1. Home
  2. FAQ – Häufige Fragen
  3. Composer bei HostPress

Composer bei HostPress

Was ist Composer?

Der Composer ist ein App-Paket-Manager auf Basis von PHP, welcher dafür gedacht ist, diverse Pakete (mit Code, Modulen oder Bibliotheken) von anderen Quellen abzurufen.
Dies erlaubt dem Benutzer somit, bereits vorgefertigte Pakete von verschiedenen Quellen zu verwenden.

Durch Composer werden folgende Dinge ermöglicht:

  • Herunterladen und Einbinden von Paketen in ein Projekt.
  • Herunterladen und Einbinden aller zugehörigen Pakete, welche für das Hauptpaket benötigt werden.
  • Überprüfung, ob die Pakete die Systemanforderungen erfüllen.
  • Überprüfung bzgl. Versionskonflikten zwischen den Paketen.
  • Aktualisieren der vorhandenen Pakete und deren Abhängigkeiten

Wie funktioniert der Composer?

Der Composer wird für unseren Kunden von HostPress installiert und bereitgestellt. Nach der Installation findest du den Composer in deinem Plesk Control Panel.
Danach funktioniert dies am einfachsten erklärt folgendermaßen:

„Composer, lade Paket A in mein Projekt“

Nun werden durch den Composer verschiedene Server, sog. Repositorys mit Sammlungen von Paketen zum herunterladen durchsucht und bereitgestellt. Sobald der Composer Paket A in einem Repository findet, lädt er sowohl dieses als auch alle zugehörigen Pakete in das Projekt (benötigt Paket A auch Paket B, wird dieses ebenfalls geladen usw.).
Ein „Projekt“ ist in dem Sinne die Codebasis, in der Regel von einer Website oder Anwendung, welche von Composer verwaltet wird.
Ebenfalls kontrolliert der Composer per Packagist.org, ob zwischen den Paketen Konflikte existieren und ob das lokale System die Mindestanforderungen erfüllt.
Sollte es hier Probleme geben, zeigt der Composer einen Fehler an und installiert die Pakete erst, wenn diese behoben wurden.

Woher bekommt der Composer seine Daten?

Standardmäßig benutzt der Composer als Haupt-Repository packagist.org, es können aber auch benutzerdefinierte Repositorys wie GitHub oder BitBucket angegeben werden. Diese bieten die Möglichkeit, auch private Sammlungen von Paketen mit dem Composer zu verwalten.
Packagist.org wurde speziell für Composer eingerichtet und enthält unzählige von öffentlichen Paketen, welche von diversen Entwicklern zur Verfügung gestellt wurden.

Was passiert bei einer Paketinstallation?

Durch den Composer werden die Projekte auf technischer Ebene durch zwei Dateien verwaltet:

Composer.json:
Diese Datei beschreibt das Projekt. Somit werden alle Pakete, welche Bezug zu dem Projekt haben, hier gespeichert.
Diese Datei kann auch verwendet werden, um bestimmte Ordnerpositionen festzulegen. In diesen werden die Pakete installiert oder Scripte, welche im Rahmen der Composer-Prozesse (install, update, …) eingerichtet werden, ausgeführt.
Verwendet man private Repositorys, werden diese auch in dieser Datei deklariert.
Jedes Paket hat einen Namen, welcher aus zwei teilen besteht. Der erste Teil ist der Anbieter (Vendor) des Pakets. Dieser kann entweder eine beliebige Zeichenkette sein, ist aber oft der Firmenname oder Github Benutzername usw.
Der zweite Teil des Namens ist der Name des Pakets. Beide Teile werden hier durch einen Schrägstrich getrennt und enthalten nur Kleinbuchstaben. Pakete werden durch den Befehl „require“ von Composer installiert.

$ composer require servertest/notification_center

Wird dieser Befehl ausgeführt, lädt der Composer das Paket und dessen Abhängigkeiten herunter und fügt es der composer.json Datei hinzu, um anzuzeigen, dass dieses Projekt das Paket verwendet. Somit ist die composer.json im wesentlichen eine Metadatendatei, welche die Codebasis des Projekts beschreibt.

Composer.lock:
Die Datei Composer.lock dient im wesentlichen als Momentaufnahme aller Versionen der von der composer.json verwalteten Pakete.
Führen wir z.B. das erste mal den Befehl composer require servertest/notification-center im Projekt aus, geschehen hier folgende Dinge:

  • Die neuste Version des Notification Centers wird in das Projekt heruntergeladen
  • Alle Pakete, welche in Abhängigkeit des Notification Centers stehen, werden heruntergeladen
  • Die Composer.json Datei wird mit der Abhängigkeit des Notification Centers zum Projekt aktualisiert
  • Die Composer.lock Datei wird erstellt bzw. aktualisiert, um die aktuellen Versionen der vom Composer verwalteten Pakete wiederzugeben.

Somit verfolgt composer.json, welche Pakete verwendet werden, während composer.lock eine Momentaufnahme der vom Projekt verwendeten Pakete erstellt.

Wie aktualisiere ich Composer?

Um Composer aktuell zu halten, sollte man immer wieder mal folgenden Befehl ausführen:

$ composer self-update

Wie füge ich Pakete hinzu?

Der Befehl „require“ fügt der Datei composer.json das neue Paket hinzu und lädt sowohl diese, als auch alle zugehörigen Pakete herunter.

# Neuste Version
$ composer require isotope/isotope-core

# Spezifische Version
$ composer require isotope/isotope-core:2.5.3
$ composer require isotope/isotope-core:^2.0

# Mehrere Pakete gleichzeitig hinzufügen
$ composer require isotope/isotope-core terminal42/contao-leads

Wie installiere ich Pakete?

Durch den Befehl „install“ wird die Datei composer.json ausgelesen. Ebenfalls werden dadurch Abhängigkeiten ausgelöst und installiert. Befindet sich im aktuellen Verzeichnis deine composer.lock Datei, verwendet Composer die Versionen aus dieser. Dadurch wird sichergestellt, dass jeder die gleiche Version erhält. Sollte diese Datei noch nicht existieren, erstellt Composer diese nach der Auflösung der Abhängigkeiten.

$ composer install

Wie aktualisiere ich Pakete?

Um die composer.lock Datei zu aktualisieren und die neuesten Versionen eines Pakets zu erhalten, wird der Befehl „update“ verwendet.

# Alle Pakete aktualisieren
$ composer update

# Spezifisches Paket aktualisieren
$ composer update isotope/isotope-core

# Mehrere Pakete aktualisieren
$ composer update isotope/isotope-core terminal42/contao-leads

# Alle Pakete vom gleichen Anbieter (vendor)
$ composer update terminal42/*

# Paket(en) und deren Abhängigkeiten aktualisieren
$ composer update --with-dependencies isotope/isotope-core

Wie entferne ich Pakete?

Durch den Befehl „remove“ wird das Paket aus der composer.json Datei entfernt und der Code aus dem Projekt gelöscht.

# Spezifische Paket entfernen
$ composer remove isotope/isotope-core

# Mehrere Pakete gleichzeitig entfernen
$ composer remove isotope/isotope-core terminal42/contao-leads

Wie suche ich Pakete?

Mit dem Suchbefehl können Pakete in den angegebenen Repositorys des aktuelle Projekts gesucht werden. Dies ist normalerweise packagist.org. Ebenfalls ist die Suche auf der Seite direkt möglich.

$ composer search monolog

# Ausgabe
monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
symfony/monolog-bundle Symfony MonologBundle
symfony/monolog-bridge Symfony Monolog Bridge
...

Wie prüfe ich auf Updates für Pakete?

Der „outdated“ Befehl zeigt eine Liste der installierten Pakete, für die Updates Verfügbar sind, einschließlich der aktuellen und neuen Version.

$ composer outdated
Zuletzt geändert: 9. August 2022

War dieser Artikel hilfreich?

Empfohlene Artikel

Brauchst du Unterstützung?
Du kannst die gesuchte Antwort nicht finden?
Support kontaktieren