ynamite / massif_minify

Komprimierung- und Kompilierungs-Addon für Redaxo 5
Other
7 stars 2 forks source link

getCombinedCSSMinFile und getCSSMinFile #2

Closed fietstouring closed 7 years ago

fietstouring commented 7 years ago

getCombinedCSSFile funktioniert tadellos. Ersetze ich es durch getCombinedCSSMinFile wird die Datei in einem Loop unendlich oft generiert. Dasselbe passiert bei getCSSMinFile.

mit getCombinedJSMinFile wird kein .min an den Dateinamen angehängt. das konnte ich beheben durch hinzufügen von

$combinedFile = self::replaceFileExtension($combinedFile, 'min.js');

in Zeile 130 von class.massif_minify.php

ynamite commented 7 years ago

Schaue ich mir an, danke für die Info.

Ein .min wird in der Tat nicht angehängt (hatte ich bewusst so gemacht). Gibt es einen guten Grund für das Suffix?

fietstouring commented 7 years ago

Gerne. Nachdem es getCombined... und getCombinedMin gibt, sagt mir meine Logik, dass das Suffix dann gut wäre...

so sieht der output in etwa aus mit getCSSMinFile

bildschirmfoto 2017-03-23 um 13 21 37

ynamite commented 7 years ago

Danke für den Screenshot.

Alles klar, sehe ich ein und wird eingebaut! ;)

gut8er commented 7 years ago

Ich habe leider genau das gleiche Problem gibt es denn schon eine Lösung dafür? Auch die Prüfung ob sich ein File geändert hat scheint leider nicht zu laufen. Ich habe leider keine Fehlermeldung aber wenn ich auf dem Server eine CSS Datei überschreibe wird die Änderung erst übernommen nachdem ich die styles.css gelöscht habe. Den htaccess Schnipsel habe ich übernommen.

ynamite commented 7 years ago

@gut8er @fietstouring

Neue Version online (im Installer und auf Git). Bitte testet das Ganze und gebt mir Bescheid ob's soweit läuft.

Entschuldigt bitte, dass das so lange gedauert hat, aber viel los gerade :)

https://github.com/ynamite/massif_minify/commit/95e0f66fefd67893dc2f2b55723bfe53151a01c7

fietstouring commented 7 years ago

gerade getestet. nehme mal nicht an, dass es ein gewünschter effekt ist, dass die Quelldateien des minify-Prozesses gelöscht werden!!!! oder?

sowohl CSS als auch JS.

ynamite commented 7 years ago

@fietstouring Quelldateien sollten keine gelöscht werden, nein. Verwendest du SCSS oder nur CSS?

<link rel="stylesheet" href="<?=massif_minify::getCombinedCSSMinFile("style.css", array("_settings.scss","style.scss"))?>" />

Im obigen Beispiel werden im Ausgabeordner zuerst temporär _settings.css und style.css angelegt, die Inhalte zusammengefügt und dann daraus die style.min.css generiert und ebenfalls im Ausgabeordner angelegt. Die beiden temporären Dateien werden danach wieder gelöscht.

Ich kann mir gerade nur vorstellen das dein Quell-Ordner auch dein Ziel-Ordner ist? Stimmt das?

fietstouring commented 7 years ago

nein, quell- ist nicht zielordner. CSS Pfad = theme/public/resources/

Hier als Beispiel:

<link rel="stylesheet" type="text/css" href="<?=massif_minify::getCombinedCSSMinFile("style.css", array("js/bower_components/flickity/dist/flickity.css","css/main.css"))?>" media="all" />

Wenn das ausgeführt wird, wird das .min.css file ordentlich erstellt. Nur die 2 css files werden gelöscht.

Beim JS ist es gleich. das JS minifying hat ja vor deinem Update anstandslos funktioniert. Jetzt werden die files gelöscht. Hier kommen bei mir die files teilweise aus Unterordnern des JS Path Ordners theme/public/resources/js/ oder aus diesem

ynamite commented 7 years ago

@fietstouring du hast völlig Recht. Hatte schon was eingebaut um temporäre Dateien zu löschen (sollte aber nur SCSS betreffen). Ist nun gefixt.

Hoffe das hat keine grossen Umstände bereitet. Entschuldige, hab gerade nicht sehr viel Zeit um alles zu testen.

fietstouring commented 7 years ago

alles klar, war zunächst etwas geschockt ;-) geht das automatisch in den Installer oder soll ich es via github updaten?

ynamite commented 7 years ago

@fietstouring Hab's im Installer schon aktualisiert, Version 1.1.2 ist nun online (oder sollte :P)

Aber auch hier, Vorsicht, man weiss nie wozu ich fähig bin. An einem Freitag Nachmittag. Bei dem Wetter. Unter Stress ;)

fietstouring commented 7 years ago

ah so, bei Euch regnets auch? ;-)

fietstouring commented 7 years ago

für JS Dateien auch gefixt?

fietstouring commented 7 years ago

passt jetzt, vielen Dank!

gut8er commented 7 years ago

Erstmal vielen Dank für die fixes. Ich habe aber noch so ein zwei kleine Probleme vllt. bin ich auch aber nur zu dumm.

Setup: Einstellungen -> JS, CSS komprimieren aktiv Pfad js -> resources/ Pfad css -> resources/ Aufrufe getCombinedCSSMinFile("style.css", array("resources/css/file1.css","resources/css/file2.css", usw)) getCombinedJSMinFile("script.js", array("resources/js/file1.js","resources/js/file2.js", usw))

Das funktioniert soweit alles bis auf die JS Komprimierung, da minified er manche Files leider nicht. Könnte es daran liegen das meine Files teileweise schon minified sind und manche nicht?

Zum anderen habe ich es nur mit dieser Ordner-Struktur zum laufen bekommen. Mein Ziel war eigentlich folgende Struktur zu haben um keine Pfade in den CSS Files anpassen zu müssen.

/resources/build/ -> hier die beiden Files von deinem Addon /resources/css/ -> mein ganzes CSS Zeug /resources/js/ -> mein ganzes JS Zeug

Wenn ich haber in den Einstellungen als Pfad "resources/build/" angegeben habe hat das Script leider immer versucht die Dateien unterhalb von build zu suchen :( Dies habe ich nur durch Zufall in der Ausgabe der script.min.js geshen. Dort kam dann ein not found auf "var/usw/resources/build/resources/js...".

Und die CSS Datei ist einfach leer geblieben. Ich habe es auch im übergabe Array mit absoluten Pfaden versucht. Leider ohne erfolg. Ich habe es nur zum laufen bekommen mit dem oben genannten Setup.

Über einen Tip wäre ich sehr dankbar. Schönes WE

fietstouring commented 7 years ago

Mir ist auch aufgefallen dass beim JS minify zwar Kommentare entfernt werden, der output aber nicht in einer Zeile ist.

Bez. der Pfade würde ich mir zb einen dritten optionalen Parameter in der Funktion wünschen, wo man zb. den Output in einen Unterordner des Hauptpfades lenken kann. Ich denke das würde auch obiges Problem lösen. -- Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.

ynamite commented 7 years ago

Neue Version online, Version 1.2.0 mit weiteren Einstellungsmöglichkeiten und Bugfixes. Könnt ihr mal schauen ob es damit so funzt wie ihr gerne möchtet?

@gut8er Woran erkennst du, dass die JS Dateien nicht komprimiert werden? Bei mir funktioniert es. Ob z.T. die Dateien vorab schon minifiziert wurden, dürfte keine Rolle spielen.

@gut8er @fietstouring Es stimmt allerdings, dass nicht alles auf 1 Zeile erscheint. Das muss es auch nicht unbedingt, trotzdem habe ich in der neusten Version eine Einstellung eingebaut, die dies erlaubt.

Gebt mir Bescheid ob das so euren Vorstellungen entspricht. Thx!

gut8er commented 7 years ago

Hi über den Installer hauts leider nicht -> Die Zip-Datei ist nicht im erforderlichen Format. Ich zieh es mal von hier. Das habe ich daran erkannt das ein 1000 Zeilen Script auch in der script.js mit 1000 Zeilen ausgegeben wird inkl. Einrückungen etc.

Aber vielen Dank für die schnelle Antwort.

gut8er commented 7 years ago

Der minify für JS klappt jetzt super Sache 👍 Die Pfadangaben klappen auch fast. Den Ordner "css" oder "js" schreibt er automatisch im Hintergrund. Das solltest du evtl. beim Input als Hinweis mit angeben. Er hat aus JS Pfad -> "resources/js" im Script dann "resources/js/js/files.js not found" gemacht. Wenn ich es weglasse klappt es.

Die CSS Datei muss nun ohne Endung angegeben werden: massif_minify::getCombinedCSSMinFile("style", $styles)

Wenn man die Datei mit Endung angibt: massif_minify::getCombinedCSSMinFile("style.css", $styles) oder: massif_minify::getCombinedCSSMinFile("style.min.css", $styles)

werden folgende Aufrufe generiert: Pfad/styles.min.min.css oder Pfad/styles.min.min.min.css

Könntest du ja in der Anleitung einfach noch anpassen.

Aber sehr geile Sache.... dann werde ich mich erstmal von meinem lokalem GULP verabschieden. :)

ynamite commented 7 years ago

@gut8er Installer sollte nun funzen. Hab soeben eine neue Version hochgeladen.

Könntest du nochmal testen? :)

Wegen dem Pfad, bis anhin wurden Ordner nicht automatisch angelegt, das ist jetzt aber der Fall. Beachte bitte das Pfade in den Einstellungen zwingend im Schema ordner/unterordner/css/ eingegeben werden müssen. Man beachte die Slashes.

Dateien müssen weiterhin mit Endung angegeben werden: massif_minify::getCSSFile("style.css") ergibt style.css massif_minify::getCSSMinFile("style.css") ergibt style.min.css massif_minify::getCombinedCSSMinFile("style.css", $styles) ergibt style.min.css etc.

gut8er commented 7 years ago

Seite leider tot nach dem install ;) AH01071: Got error 'PHP message: PHP Fatal error: Allowed memory size of 277872640 bytes exhausted (tried to allocate 262144 bytes) in /var/www/vhosts/projekt/httpdocs/redaxo/src/core/lib/util/dir.php on line 20\nPHP message: PHP Fatal error: Allowed memory size of 277872640 bytes exhausted (tried to allocate 262144 bytes) in Unknown on line 0\n'

ynamite commented 7 years ago

@gut8er Das ist aber ein Problem mit rex_dir bzw. mit deinem memory limit ... komisch vor allem, dass 277872640 maximal vorhanden sind aber keine 262144 zugewiesen werden können. Das Limit ist ja deutlich höher als verwendet werden will. Macht irgendwie nicht viel Sinn diese Fehlermeldung.

Hab die neue Version auf 2 verschiedenen live Server und einer lokalen MAMP Installation am laufen und funktioniert hier einwandfrei ... komisch.

Hast du versucht die Verzeichnisse die du mit dem Addon verwendest manuell anzulegen?

gut8er commented 7 years ago

Nein ich habe nur im Installer auf aktualisieren geklickt. Aber ich habe es jetzt nochmal aus dem GIT hier geladen und überschrieben und reinstalliert. Das hat geklappt.

Aber jetzt habe ich das Problem das er immer versucht styles.min.min.css zu laden. Und das mit den Ordnern klappt leider nicht. Gleiches Problem wie davor CSS File leer und JS File:

/var/www/vhosts/projekt/httpdocs/resources/js/js/010_modernizr.js usw usw

hatte ich nur lösen können als ich im Addon bei den Quellen "resources/" angegeben habe. Da er sich wie man oben sieht das /js selbst nochmal mit hinschreibt.

Ich versuch es nochmal komplett zu deinstallieren und zu löschen und nochmal zu laden. Evtl. ändert das was. Server ist ein PLESK System mit PHP7.1

ynamite commented 7 years ago

@gut8er auf beiden Live-Server hab ich ebenfalls auf aktualisieren geklickt, hat bei mir geklappt.

Auch das Problem mit den Ordner kann ich nicht nachvollziehen. Ich hab überall folgendes eingestellt: minify

Wie sieht das bei dir aus? Bei mir werden Ordner, die nicht im System vorhanden sind, problemlos erstellt falls nötig. Es wird nichts zusätzliches angehängt. Ich hab keine Ahnung woher das js kommt welches bei dir angehängt wird. Passiert bei mir schlicht nicht ... auch das .min dürfte nur einmal angehängt werden, ausser du hast im Template das .min bereits drin.

Willst du mir mal Zugriff auf den Server und Redaxo geben? Sonst kann ich nur vermuten was los sein könnte ... In MAMP läufts bei mir auf PHP 7.0.10. Auf den Live-Server ist's PHP Version 5.6.27

gut8er commented 7 years ago

Nope leider kein Effekt. Komplett gelöscht frisch aus dem Installer geladen und installiert. Einstellungen vorgenommen gespeichert -> Seite tot 500er gleiche Meldung wie vorhin

AH01071: Got error 'PHP message: PHP Fatal error: Allowed memory size of 277872640 bytes exhausted (tried to allocate 262144 bytes) in /var/www/vhosts/projekt/httpdocs/redaxo/src/core/lib/util/dir.php on line 20\nPHP message: PHP Fatal error: Allowed memory size of 277872640 bytes exhausted (tried to allocate 262144 bytes) in Unknown on line 0\n', referer: http://projekt/redaxo/index.php?page=massif_minify/einstellungen

Mh naja er schreibt ja nur den Pfad falsch im Aufruf er hat keine falschen Ordner erstellt

ynamite commented 7 years ago

@gut8er Versuch mal eins nach dem anderen. Mal nur CSS. Wie baust du das im Template ein und wo sind deine CSS Dateien effektiv abgelegt und wohin soll die komprimierten Dateien gespeichert werden? Bitte schreib genau was du machst und was du tun willst.

Ich brauche mehr Infos :)

gut8er commented 7 years ago

Hab dir eine Anfrage geschickt wenn du Zeit hast können wir mal telefonieren und ich geb dir meinen Bildschirm frei

ynamite commented 7 years ago

@gut8er Klingt gut! Hättest du morgen Zeit? Ich komm heute wohl nicht mehr dazu, sorry.

ynamite commented 7 years ago

Fixed! https://github.com/ynamite/massif_minify/commit/4bec3c628c81c5acf77cb916b72b3a3efd2a3c6d

Vielen Dank @gut8er!