ynamite / massif_minify Goto Github PK
View Code? Open in Web Editor NEWKomprimierung- und Kompilierungs-Addon für Redaxo 5
License: Other
Komprimierung- und Kompilierungs-Addon für Redaxo 5
License: Other
Ich hab da in meinem JS folgende Variable drin:
var x = $('a[href^="#"]:not(.no-scroll)');
In der compressed Ausgabe mit der Funktion massif_minify::getJSCodeFromTemplate(id, true); fehlt alles in der Zeile was nach dem Hash # kommt.
$('a[href^="
... arbeitet nicht mit dem Code zusammen. Irgendwas wird herausgekürzt, sodass Analytics dann gar nicht mehr zählt.
AddOn massif_minify meldet: Das AddOn be_style (Version 3.0.0) entspricht nicht der geforderten Versionsbedingung ^2.9.0!
Jetzt muss ich erstmal schauen wo das be_style im massiv_minify steht...
Zur Referenz:
Hi ...
Hast du ne Idee für mich?
Habe Massif minify am Laufen auf einem Webspace von mir zum Entwicklen.
Da habe ich in der htaccess das hier drin und die style.css wird dann auch gefunden. alles fein.
<IfModule mod_rewrite.c>
# REWRITE RULE FOR JS/CSS VERSIONING
RewriteRule ^(.*)\.[0-9]+\.(css|js)$ $1.$2 [L]
</IfModule>
Jetzt habe ich vom Kunden den "endgültigen" Webspace zur Verfügung gestellt bekommen (united-domains) und der ist irgendwie kacke.
Hier wird die CSS datei dann nciht gefunden, trotz korrekter htaccess.
Also das Problem ist das:
<IfModule mod_rewrite.c>
# REWRITE RULE FOR JS/CSS VERSIONING
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.[0-9]+\.(css|js)$ $1.$2 [L]
</IfModule>
Hallo
es wäre super wenn es einen LESS Compiler + LESS Komprimierung gäbe.
Außerdem wenn man eine CSV Datei generieren + zum download VIA php anbieten will, funktioniert dies nicht, weil hierbei auch eine Komprimierung statt findet. Also wäre es noch super wenn eine Komprimierung einer bestimmten Datei ausgeschlossen werden kann.
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
Ich verwende in letzter Zeit oft inline CSS im <head>
, welches ich in ein template packe.
Dafür hab ich zwei der Funktionen in massif_minify kopiert und angepasst, damit man das auch minifyen kann. Vielleicht willst Du das hinzufügen.
public static function getCSSCodeFromTemplate($templateId, $simpleMinify = true) {
$template = new rex_template($templateId);
return self::getCSSCode($template->getFile(), $simpleMinify);
}
protected static function getCSSCode($includeFileWithPath, $simpleMinify = true) {
$interpretedPhp = '';
// interpret css as php
ob_start();
@include($includeFileWithPath);
$interpretedPhp = ob_get_contents();
ob_end_clean();
if ($simpleMinify) {
$interpretedPhp = self::getMinifiedContent($interpretedPhp, 'css');
}
return $interpretedPhp;
}
Wenn ich in den Einstellungen einen Pfad, z.B. zur CSS-Datei, eintrage, der nicht existiert, dann bekomme ich einen Fehler 500 - Internal Server Error.
edit: Bin mir jetzt nicht mehr sicher, ob es der Pfad alleine ist. Habe wieder einen 500er bekommen, diesmal bei richtigen Pfaden. Nachdem ich CSS- und JS-Komprimieren deaktiviert habe ging es wieder.
Redaxo 5.2.0 / PHP 5.6.30
habe folgendes CSS bei mir stehen:
padding: 0 calc(var(--grid-gutter-width) / 2) calc(var(--grid-gutter-width) / 2);
die Funktion getCombinedCSSMinFile macht dann das draus:
padding: 0 calc(var(--grid-gutter-width) / 2);
musste die Werte dann separat setzen um das richtige Ergebnis zu erzielen:
padding-top: 0;
padding-left: calc(var(--grid-gutter-width) / 2);
padding-right: calc(var(--grid-gutter-width) / 2);
padding-bottom: calc(var(--grid-gutter-width) / 2);
Ich habe von bower auf npm gewechselt um JS-libraries in meine Projekte einzubauen. Jetzt taucht plötzlich das Problem auf, dass ich einen 404 Error bekomme, wenn ich files aus dem npm Ordner mit massif_minify::getJSFile($file)
hole. Die files haben interessanterweise eine filetime von 1985 also zB /theme/public/resources/js/npm/node_modules/jquery/dist/jquery.499162500.js
Speichere ich das file neu ab, dann gehts problemlos. Woran könnte das liegen?
Neustes Redaxo installiert, alles auf dem neusten Stand. Htaccess mehrmals angepasst und mit Base und ohne versucht. Hat leider absolut nicht funktioniert oder die Beschreibung ist unvollständig, wovon ich jetzt nicht ausgehe.
Da der Minifier HTML-Kommentare auch entfernt, bleibt der der Such-Index von Search it bei der Indizierung leer.
Während der Indizierung ruft Search it den jeweiligen Artikel mit dem leeren Parameter 'search_it_build_index' auf und setzt temporär HTML-Kommentare in den Quelltext für die Stellen, die aufgenommen werden .
Ich habe in 'lib > class.massif_minify.php' in Zeile 47 das ergänzt:
$search_it_indexer = rex_get('search_it_build_index','string');
$search_it_highlighter = rex_get('search_highlighter','string');
if($search_it_indexer == "" && $search_it_highlighter != "") {
$search_it_indexer = 'search_it_highlighter';
}
und aus Zeile 84 das gemacht:
if ($addon->getConfig('minify_html') && !rex::isBackend() && $search_it_indexer == "") {
Ich bin mir nicht sicher, ob das so "schön" ist, aber der Indexaufbau von Search it funktioniert jetzt und im Frontend wird trotzdem alles noch hübsch komprimiert ausgegeben.
Evtl. kannst du das bei ner neuen Version im Hinterkopf behalten :-)
Wenn man mittels YRewrite mehrere Domains betreibt und z.B. wie folgt eine SCSS zum Compilen einbindet, wird in einer "Nebendomain" ein absoluter Pfad zur "Hauptdomain" der Redaxo-Installation ausgegeben, was nicht korrekt ist.
Wenn man hier einfach
return rtrim(rex::getServer(), "/") . self::$cssOutDir . self::getFileWithVersionParam($file, self::$cssOutPath);
gegen
return self::$cssOutDir . self::getFileWithVersionParam($file, self::$cssOutPath);
austauscht, scheint es zu funktionieren. Ob der relative Pfad Nachteile hat, konnte ich noch nicht feststellen.
https://github.com/ynamite/massif_minify/blob/master/lib/class.massif_minify.php#L113
Ich nutze gerne volle URLs und hole mir rex::getServer()
(Es gibt Vorteile!)
Da ist der / Slash am Ende dabei.
In den Einstellungen von Minify habe ich die resources/css und resources/js jeweils ohne Slash zu Beginn angegeben.
Aufgerufen:
'<link rel="stylesheet" href="<?php echo rex::getServer().massif_minify::getCombinedCSSMinFile("styles_combined.css", array(....)'
Allerdings hat man in der Ausgabe dann eine URL mit https://www.domain.de//resources/css/mini_datei.css
Kann man das nicht so gestalten, dass die Einstellungen entscheidend sind?
Dank und Gruß
Ralf
Ich habe mal PHP 7.4 versucht und lese im Error Log:
29.09.2020 15:55:50 | Deprecated | implode(): Passing glue string after array is deprecated. Swap the parameters | redaxo/src/addons/massif_minify/vendor/minify/src/CSS.php | 528 |
---|
Moin!
Mit der Umstellung auf PHP 8.1 oder höher tauchen in den Logdateien zwei Meldungen auf:
Creation of dynamic property Minify_HTML::$_html is deprecated
redaxo/src/addons/massif_minify/vendor/Minify_HTML.php:69
Use of "parent" in callables is deprecated
redaxo/src/addons/massif_minify/vendor/minify/src/JS.php:129
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.