Von Lokal zu Global: TYPO3-Extensions professionell publizieren

Die Zeiten, in denen man .t3x-Dateien manuell im TER (TYPO3 Extension Repository) hochgeladen hat, sind zum Glück vorbei. Der moderne Standard ist Composer. Hier beschreiben wir den Workflow, um deine Extension sauber auf github und packagist zu deployen, sodass sie einfach per Composer geladen und installiert werden kann.

1. Vorbereitung: Die composer.json

Damit Packagist und TYPO3 wissen, was sie mit deinem Code anfangen sollen, ist eine korrekte composer.json im Root-Verzeichnis deiner Extension essenziell. Für moderne Installationen (TYPO3 v13 & v14) setzen wir auf PHP 8.3+ und aktuelle Standards.

 

{
    "name": "rmsstuttgart/rms-ai-search",
    "type": "typo3-cms-extension",
    "description": "AI Search extension for TYPO3 - connect your TYPO3 to chat.rm-solutions.de/",
    "license": "GPL-2.0-or-later",
    "authors": [
        {
            "name": "Michael Kettel",
            "role": "Developer",
            "homepage": "https://rm-solutions.de"
        }
    ],
    "config": {
        "allow-plugins": {
            "typo3/cms-composer-installers": true,
            "typo3/class-alias-loader": true
        }
    },
    "require": {
        "php": "^8.3",
        "typo3/cms-core": "^12.4 || ^13.4 || ^14.0"
    },
    "require-dev": {
        "phpstan/phpstan": "^1.10",
        "typo3/coding-standards": "^0.8",
        "ssch/typo3-rector": "^2.15"
    },
    "autoload": {
        "psr-4": {
            "Rmsstuttgart\\RmsAiSearch\\": "Classes/"
        }
    },
    "extra": {
        "typo3/cms": {
            "extension-key": "rms_ai_search"
        }
    }
}

 

2. GitHub Deployment

Erstelle ein neues öffentliches Repository auf GitHub und pushe deinen Code dorthin. Eine saubere Versionierung ist hierbei der Schlüssel.

 

git init
git add .
git commit -m "Initial commit: Support for TYPO3 v13 and v14"
git branch -M main
git remote add origin github.com/nutzername/my-extension.git
git push -u origin main

 

3. Packagist-Registrierung

Damit Nutzer deine Extension via composer require finden, musst du sie auf Packagist.org anmelden.

  1. Logge dich bei Packagist ein (am besten via GitHub-Login).
  2. Klicke auf den Button Submit.
  3. Gib die GitHub-URL deines Repositories ein.
  4. Klicke auf Check und nach der Validierung auf Submit.

4. Automatisierung per Webhook

Damit Packagist sofort mitbekommt, wenn du eine neue Version (ein neues Tag) veröffentlichst, richten wir eine automatische Synchronisation ein. Dies verhindert, dass du nach jedem Release manuell auf "Update" bei Packagist klicken musst.

Der Weg über den GitHub Webhook:

  • Gehe auf Packagist zu deinem Profil > Show API Token. Kopiere diesen Token.
  • Gehe in dein GitHub-Repository > Settings > Webhooks.
  • Klicke auf Add webhook.
  • Payload URL: packagist.org/api/github
  • Content type: application/json
  • Secret: Dein Packagist API Token.
  • Wähle "Just the push event" (Packagist filtert relevante Tags automatisch heraus).
  • Add webhook.

Sobald du nun ein Git-Tag erstellst und pushst, wird Packagist innerhalb von Sekunden aktualisiert:

 

git tag 1.0.0
git push origin --tags

 

5. Installation der Extension

Nachdem alles eingerichtet ist, können Nutzer (oder du selbst in einem Testprojekt) die Extension einfach installieren. Composer kümmert sich dank des Typs typo3-cms-extension automatisch um die korrekte Platzierung im TYPO3-System:

composer require rmsstuttgart/rms-ai-search