Die moduleinfo.json

Jedes Modul, das mit dem MMLC funktionieren soll braucht eine moduleinfo.json Datei. In dieser Datei werden die wichtigsten Angaben und Einstellungen für den MMLC zum Modul konfiguriert. In diesem Abschnitt werden die Felder und dessen Funktionen in der moduleinfo.json beschrieben.

Beispiel #

Eine Vollständige moduleinfo.json könnte wie folgt aussehen.

{
    "name": "My first Module",
    "archiveName": "mycompany/my-first-module",
    "sourceDir": "src",
    "version": "auto",

    "shortDescription": "",
    "description": "",

    "developer": "Robin Wieschendorf",
    "developerWebsite": "https://robinwieschendorf.de",
    "website": "https://github.com/RobinTheHood/modified-std-module",

    "category": "productivity",
    "price": "29.90",
    "tags": "versand, shipping, paket",

    "require": {
        "composer/autoload": "^1.3.0",
        "robinthehood/modified-std-module": "^0.10.0"
    },

    "modifiedCompatibility": [
        "2.0.7.0",
        "2.0.7.1",
        "2.0.7.2",
        "3.0.0",
        "3.0.1",
        "3.0.2",
        "3.1.0",
        "3.1.1",
        "3.1.2"
    ],

    "php": {
        "version": "^7.4 || ^8.0"
    },

    "mmlc": {
        "version": "^1.21.0"
    },

    "autoload": {
        "psr-4": {
            "MyNamespace\\MyFirstModule\\": "src-mmlc"
        }
    }
}

Der Aufbau #

Bei der moduleinfo.json handelt es sich um eine Datei im JSON Format. Die Datei hat Ähnlichkeit mit einer composer.json Datei.

name #

In diesem Feld steht der Name des Moduls, so wie er für den User im MMLC angezeigt werden soll.

Hier ein Beispiel:

"name": "My first Module"

archiveName #

Hierbei handelt es sich um den eindeutigen technischen Namen des Moduls. Der archiveName setzt sich aus dem vendorName und dem moduleName getrennt mit einem Slashzeichen zusammen.

Hier ein Beispiel:

"archiveName": "mycompany/my-first-module"

sourceDir #

Mit diesem Feld kann festgelegt werden, aus welchem Verzeichnis die Dateien aus dem Modul in den Shop kopiert werden sollen.

Hier ein Beispiel:

"sourceDir": "src"

version #

Die Version des Moduls in Semver Konvention. Alternativ (und empfohlen) kann hier der Wert auto eingetragen werden. Das hat zur Folge, dass die Version automatisch aus einem git Tag entnommen wird und nicht mehr explizit angegeben werden muss.

Hier ein Beispiel:

"version": "auto"

shortDescription #

Mit diesem Feld kann die Kurzbeschreibung festgelegt werden die im MMLC in der Übersichtsseite angezeigt wird.

description #

Mit diesem Feld kann die Beschreibung festgelegt werden, die im MMLC auf einer Moduldetailseite angezeigt wird.

installation #

Mit diesem Feld kann die Installationsanleitung für das Modul angegeben werden. Als Alternative hierzu bietet sich an die Anleitung in die Datei install.md zu schreiben.

developer #

Der Entwickler des Moduls. Z. B. der Name des Autors, des Programmieres oder der Firma.

Hier ein Beispiel:

"developer": "Robin Wieschendorf"

developerWebsite #

Die Webseite / Url auf die verlinkt werden soll, wenn man auf den Developer klickt.

Hier ein Beispiel:

"developerWebsite": "https://robin-wieschendorf.de"

website #

Die Webseite / Url auf der man sich über das Modul informieren kann.

Hier ein Beispiel:

"website": "https://github.com/RobinTheHood/modified-std-module"

category #

Mit dem Feld category kann festgelegt werden, in welcher Kategorie das Modul im MMLC angezeigt wird. Wird kein Wert für das Feld angegeben oder ein ungültiger Wert landet das Modul in der Kategorie Sonstige Module. Folgende gültige Werte stehen zur Auswahl:

  • import/export für Import/Export
  • language für Sprachpaket
  • persistance für Datenbank Module
  • productivity für Produktivität
  • promotion/marketing für Promotion & Marketing
  • productinfos für Zusatzinformationen & Produkt-Tabs
  • shipping für Versand Module
  • payment für Zahlungs Module
  • library für Programmcode Bibliotheken
  • nocategory für Sonstige Module

Hier ein Beispiel für ein Modul, das in der Kategorie Produktivität angezeigt werden soll:

"category": "productivity"

price #

Hier kann eingetragen werden, zu welchem Betrag das Modul verkauft wird. Der Betrag muss in englischer Schreibweise ohne Währungzeichen geschrieben werden. Wird hier kein Wert eingetragen, zeigt der MMLC "Preis auf Anfrage" an. Wird hier der Wert free eingetragen, handelt es sich um ein kostenloses Modul.

Hier ein Beispiel für ein Modul, das 29,90 € anzeigen soll:

"price": "29.00"

tags (ab Version 1.18.0) #

Mit diesem Feld können weitere Suchwörter hinzugefügt werden, die mit dem Modul verknüpft werden. Die Tags müssen mit Komma getrennt werden.

Hier ein Beispiel:

"tags": "versand, shipping, paket"

require #

Hier kann eingetragen werden von welchen Modulen das Modul abhängt. Die abhängigen Module werden automatisch mitinstalliert, wenn das Modul installiert wird.

Hier ein Beispiel von einem Modul, das von den Modulen composer/autoload ab Version 1.1.0 und robinthehood/modified-std-module ab Version 0.1.0 abhängig ist.

"require": { "composer/autoload": "^1.3.0", "robinthehood/modified-std-module": "^0.10.0" }

modifiedCompatibility #

In diesem Feld muss eingetragen, mit welcher Version oder mit welchen Versionen von modifed das Modul kompatible ist. Der die Versionen müssen als JsonArray eingetragen werden.

Hier ein Beispiel:

"modifiedCompatibility": [ "2.0.7.0", "2.0.7.1", "2.0.7.2", "3.0.0", "3.0.1", "3.0.2", "3.1.0", "3.1.1", "3.1.2" ]

php (ab Version 1.21.0) #

In diesem Feld kann eingetragen werden, mit welcher PHP Version das Modul kompatible ist. Die Version muss als Composer-Version-Constraint eingetragen werden.

Folgende Operatoren stehen zur Auswahl: ^ > >= < <= ||

Hier ein Beispiel:

"php": { "version": "^7.4 || ^8.0" }

mmlc (ab Version 1.21.0) #

In diesem Feld kann eingetragen werden, mit welcher MMLC Version das Modul kompatible ist. Die Version muss als Composer-Version-Constraint eingetragen werden.

Folgende Operatoren stehen zur Auswahl: ^ > >= < <= ||

Hier ein Beispiel:

"mmlc": { "version": "^1.20.0" }

date (ab Version 1.22.0) #

Gibt das Datum und Uhrzeit an, seit dem die Modul Version veröffentlicht wurde. Dieser Wert kann lokal gesetzt werden, wird jedoch vom MMLS mit dem Datum des Git Version-Tags überschrieben. Format: YYYY-MM-DD hh:mm:ss

Hier ein Beispiel:

"date": "2023-12-24 16:30:21"

autoload #

PSR-4 Autload Einstellungen. An dieser Stelle verweisen wir auf die Anleitung von Composer PSR-4 Autoload mapping for a PHP autoloader.

Hier ein Beispiel:

"autoload": { "psr-4": { "MyCompany\\": "/vendor-no-composer/mycompany", "RobinTheHood\\Stripe\\": "src-mmlc" } }