Ich war kurz davor zu verzweifeln, denn mein Komment-Plugin für Kirby ließ sich einfach nicht via zip installieren. Die Lösung? Eine Zeile…

Manchmal zweifle ich am eigenen Verstand. Mein Kirby-Plugin "Komments" lief bei mir eigentlich wunderbar. Mein Kirby Setup basiert auf composer und so habe ich das Plugin auch via Composer installiert. Das funktionierte auch immer wunderbar.

Dann bekam ich eine E-Mail. Jemand hatte mein Plugin installiert und es konnten keine Kommentare gesendet werden. Noch viel schlimmer: Es konnten auch im Panel keine Seiten mehr gespeichert werden!

Der Fehler: Angeblich wurde eine Datei nicht gefunden. Zuerst fiel mir der relative Pfad zur Datei in der Fehlermeldung auf. Ich vermutete, daran würde es liegen. Also habe ich ein bisschen mit dem composer Setup rumgespielt, aber es funktionierte ja bei mir alles.

Ich habe lokal das Kirby Starterkit laufen, damit ich dort meine Plugins ausprobieren kann. Manchmal will man ja abseits von Unit-Tests auch nochmal was klicken und eben solche Probleme nachvollziehen. Ich kopierte also meine lokale Entwicklerversion des Plugins ins Starterkit: Funktionierte.

Ich aktualisierte die Dateien auf Github, lud die zip-Datei von dort runter: Funktionierte nicht.

Nach vielem Hin und Her, nach einem Umbau der ganzen composer.json, anpassen der autoloads wusste ich nicht mehr weiter. Sobald ich das zip von Github zog, lief das Plugin nicht mehr. Es musste also irgendwas beim Generieren des Zips passieren.

Also habe ich die Verzeichnisse und Dateien meine Entwicklungsversion mit der Zip-Version verglichen:

diff -rq kirby/komments kirby-test/starterkit-master/site/plugins/komments

Und da prangte die Zeile:

Only in kirby/komments/vendor/indieweb/mention-client: src

Der Mentionclient hat all seine Dateien im eigenen src Verzeichnis liegen. Das src Verzeichnis gab es bei mir lokal und es lag auf GitHub. Ich grübelte etwas und dann kam die böse Vorahnung…

Im Tutorial für das Monolithic Plugin Setup für Kirby-Plugins gibt es die Datei .gitattributes die dafür sorgt, dass bestimmte Dateien und Verzeichnisse nicht im Package landen. Das sind alles Dateien, die man zur Entwicklung aber nicht im laufenden Betrieb braucht. Und dort stand diese eine Zeile:

src export-ignore

Ich habe das einfach übernommen und nicht groß hinterfragt, denn ich dachte, sie würde nur bewirken, dass das src Verzeichnis auf oberster Ebene (wo die JavaScript-Quelldateien liegen) beim Exportieren (in ein Zip) ignoriert wird. Dem ist aber nicht so. Vielmehr werden alle src Verzeichnisse im Repository ignoriert. Was natürlich fatal ist, weil man nie weiß, ob evtl irgendeine dependency so ein Verzeichnis im laufenden Betrieb benötigt. Genau das war bei mir der Fall.

Ich hätte mir also das ganze Experimentieren mit Autoloads sparen können. Die Lösung war das Entfernen dieser Zeile. Die nötigen Dateien waren daraufhin wieder im Zip enthalten und alles funktionierte. Puh…

Wie findest du diesen Beitrag?
0 0
Antworten
Maurice antwortete
19.10.2020 11:30

Sure, I will

Kirby antwortete
19.10.2020 11:20

Would you mind creating an issue for it here: github.com/getkirby/getki… ? I think we should add a warning there indeed.

Kommentieren
Die eigegebene E-Mail-Adresse wird vorm Speichern unwiderruflich verschlüsselt und dient nur zur Darstellung des Avatars. Mit dem Absenden stimmst du zu, dass die eingegebenen Daten gespeichert und in Form eines Kommentars dargestellt werden dürfen.
Newsletter

Ein klassischer Newsletter mit einer Übersicht über neue Beiträge. Erscheint wöchentlich. Keine Werbung, kein Tracking.

Newsletter empfangen
Telegramkanal

Keine Verschwörungstheorien, dafür Infos über neue Beiträge, passende Quizfragen und kurze, exklusive Telegram-Beiträge.

Telegramkanal beitreten