Javascript-bibliotheken und Theme-compilierung

Ich wollte das nur mal posten, falls jemand anders ähnliche Probleme hat, oder falls jemand genaueres weiß.

In meinem Plugin verwende ich die DataTables-bibliothek, wozu ich die entsprechenden datatables.min.js und datatables.min.css einfach in meinem frontend-Ordner abgelegt habe und in einer eigenen JS-Datei darauf zugreife. Allerdings scheint der XLSX-Export nicht zu funktionieren - alles andere aber schon.

Das Problem konnte ich nun eingrenzen auf die Minifizierung. Inkludiere ich stattdessen die “normale” datatables.js-Datei, tritt das Problem nicht auf.

Nun scheint Shopware in seinem Theme-kompilierungsschritt ja alle Resourcen selbst einmal zu komprimieren (im Browser wird nur eine große JS-Datei geladen). Wenn ich mal davon ausgehe, dass AN SICH die datatables.min.js nicht von Haus aus kaputt ist, dann muss ich davon ausgehen, dass Shopware beim erneuten Komprimieren irgendwie die Javascript-datei schrottet. Allerdings nur so, dass XLSX nicht geht - andere Funktionalitäten scheinen in Ordnung zu sein.

Vielleicht kennt sich ja hier jemand damit aus, was dort genau passiert, oder ob es verschiedene Komprimierungsverfahren gibt, die sich gegenseitig beißen?

tl;dr: eine minifizierte JS-Datei kann u.U. Probleme machen in Shopware. Dann einfach mit der “großen” Datei testen - die wird vom Shopware sowieso nochmal komprimiert.

Wie hast du denn die JS im Detail eingebunden?

Ganz normal über die Theme.php? Oder hard einen im header template extended?

Ich habe kein Theme, nur ein Plugin. Die JS-Datei habe ich einfach nur im entsprechenden Ordner abgelegt - wird automatisch geladen.

Um das Thema nochmal aufzuwärmen. Mir ist heute aufgefallen, dass es gern mal Probleme gibt, wenn man mehrere minifizierte Bibliotheken einbindet. Der Grund war ganz einfach: die minifizierten Dateien verzichten auf ein Semikolon, und da Shopware die JS-Files einfach hintereinander pasted, wird dann aus zwei JS-Aufrufen einer, was entweder stillschweigend nichts tut, oder einmal laut auf die Nase fällt.

In einer anderen eingebunden Bibliothek habe ich deshalb an die minizifierte Datei hinten ein ; drangehängt - und siehe da: es läuft wieder. Ich vermute mal, dass die Ursache für mein unsprüngliches Problem genau das gleiche war und einfach eine Datei nicht richtig verarbeitet wurde.

@Shopware: bitte doch die JS-Files mit ; trennen, wenn sie in eine riesige Datei zusammengewürfelt werden.

@alle anderen: wenn ihr JS-libs einbaut, immer ein ; ans Ende, optional (defensiv) auch eins an den Anfang.