Minimieren Sie das Tool, das über das Terminal ausgeführt werden kann

35

Ich bin auf der Suche nach einem Werkzeug oder eine Art und Weise zu minify (ähnlich Compress meines Code und diese Frage auf Stack) den gesamten Code in meinen .xml, .css, .htmlund .jsDateien über Ubuntu Terminal. Irgendwann werde ich das Skript zerschlagen, aber im Moment möchte ich nur etwas zum Testen finden. Gibt es ein Tool, mit dem ich all diese Dateiformate über das Terminal komprimieren kann?

DᴀʀᴛʜVᴀᴅᴇʀ
quelle
2
Hast du sowas schon probiert tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
Roadmr
1
Ich versuche, den Code selbst zu komprimieren. So etwas wie CSS Minify
DᴀʀᴛʜVᴀᴅᴇʀ
1
Dann fragst du wohl nicht nach Komprimierung . Bei der Komprimierung regulärer Dateien (nicht-medialer Art wie Musik / Videos) wird meist nur die verlustfreie Komprimierung berücksichtigt. Sie suchen jedoch nach einer Möglichkeit, die Leerzeichen (bei denen Sie diese Daten verlieren) zu minimieren. Und weil das Minimieren verlustreich ist, können Sie nicht dekomprimieren (weil es nicht umkehrbar ist). Für mich ist dadurch "unklar, wonach Sie fragen".
Gertvdijk

Antworten:

43

Dies ist nicht die beste Option, aber wahrscheinlich die einfachste. Der YUI-Kompressor galt lange Zeit als der beste Kompressor für Javascript und CSS und bot 20-40% Verbesserungen gegenüber anderen Minimierern.

Es wurde seitdem von neueren Projekten wie Uglify.JS (was Grunt wahrscheinlich vorschlagen wird) abgelöst, aber es ist immer noch ziemlich einfach, in Ubuntu einzusteigen.

sudo apt-get install yui-compressor

Das ist es. Jetzt können Sie ausführen yui-compressor myfile.jsund es wird seine Magie tun, nur nicht so gut oder so bequem wie ein ordnungsgemäß installierter Node / Grunt / Uglify + YUI-Stack.

Oli
quelle
15
Nicht jeder, der js oder css verwendet, verwendet node.js oder führt node.js-Projekte aus. Es ist ein weiteres Framework, das Sie lernen und konfigurieren müssen, wenn Sie grunzen möchten. Ja, Grunzen ist cool. Aber heutzutage haben wir bereits genug zu lernen, bevor wir überhaupt mit dem Codieren beginnen können. Knoten / Grunzen ist also nicht immer praktisch. :) Ich selbst werde versuchen, Ihren Vorschlag von Yui-Kompressor.
Bill Rosmus
2
@BillR Ich stimme dem Gefühl zu, aber obwohl ich keine node.js-Projekte habe, verwende ich immer noch Dinge wie lessc und uglify.js, weil sie die besten Werkzeuge für den Job sind . Ich benutze Grunt nicht, weil ich es durch mein eigenes Werkzeug ersetzt habe, aber für die eigentliche Arbeit würde ich mich nie humpeln, nur um Node zu meiden. Wenn Sie in der Branche bleiben möchten, müssen Sie mit Best Practices Schritt halten.
Oli
Sie gehen davon aus, dass die Verwendung eines Knotens eine bewährte Methode ist. Vielleicht in deiner Welt, die nicht jedermanns Welt ist.
Bill Rosmus
2
Sie haben fünf Jahre Zeit für mich, aber ich weiß nicht, worum es Ihnen geht ... Verwenden Sie immer noch statisches HTML4 mit ein bisschen "DHTML" und Perl-CGI-Skripten? Verwenden Sie immer noch ASP? Oder haben Sie die Dinge umgestellt, als sich bessere Technologien zur Verfügung gestellt haben? Wir haben zwei getrennte Punkte, die hier behandelt werden. Es wird ein bisschen albern. Es ist mir egal, ob Sie keine Umschulung mögen, aber es ist mir more-csswichtig, dass Sie herausfinden, dass die Verwendung des NPM-Pakets zur Minimierung Ihres CSS aufdringlicher ist als die Verwendung von yui-compressor. Ist es nicht. Es ist nur ein weiterer Befehl, der das Gleiche besser macht.
Oli
1
Beachten Sie, dass Sie mit dieser Installation auch das openjkd installieren werden, was niemand im System haben möchte.
Wirklich schön
12

Sie können js einfach mit node und uglify-js über die Befehlszeile minimieren :

  • Installiere uglify-js mit npm install uglify-js -g

  • starte es uglifyjs app-test.js > app-test.min.js


CSS würde ich vorschlagen , clean-CSS (wahrscheinlich der stabilste css minifier auf NPM)
Beispiel Nutzung:

cleancss -o public-min.css public.css

In Bezug auf HTML ist die Minimierung normalerweise nicht die Zeit wert, die Sie in die Einrichtung investieren, aber ich habe HTML-Minimierer ausprobiert und es ist ein fantastisches Tool.

Was auch immer Sie tun, stellen Sie sicher, dass Sie das, was Sie servieren, gzipen.

user2417031
quelle
1
uglify Kann direkt installiert werden mitsudo apt-get install node-uglify
Gery
Beachten Sie, dass uglify-js nur für Javascript und nicht für CSS oder andere Dateien bestimmt ist.
Jose Gómez
2
@Gery wenn Sie installieren möchten uglifymit aptIhnen auch installieren müssen node-legacy, so laufensudo apt install node-uglify node-legacy
mxdsp
Beachten Sie, dass das cleancssCLI-Tool jetzt im clean-css-cliPaket enthalten ist.
14.
7

Verwenden Sie Minify - im Gegensatz zu den anderen Vorschlägen werden mit diesem Tool wesentlich mehr Dateitypen minimiert:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml
Dennis
quelle
Es macht einen sehr schlechten Job mit Javascript.
Federico
2

Es gibt keinen Grund, PHP-Dateien zu minimieren (es sei denn, Sie haben nur sehr begrenzten Speicherplatz und möchten jedes Bit davon verwenden).

Wenn Sie ein Ziel hinzufügen könnten (Was möchten Sie erreichen und warum?), Könnte Ihnen jemand einen besseren Weg zeigen.

JS- und CSS-Dateien werden zur Laufzeit minimiert und in den meisten Webprojekten zwischengespeichert. Es gibt minify ( https://github.com/mrclay/minify ), eine PHP "Bibliothek", die genau das kann. (Kann auch mit PHP vom Terminal ausgeführt werden)

Beachten Sie jedoch, dass eine große Javascript-Datei nicht schneller geladen werden muss als fünf kleine Dateien. Wenn Sie einen Grund und eine Lösung für diese Aussage benötigen, werfen Sie einen Blick auf http://headjs.com/

Möge die Quelle mit dir sein ...

Mondjunge
quelle
1

Ich würde die Verwendung von Grunt.js empfehlen . Es handelt sich um ein Automatisierungstool, für das Minifier als Plugins zur Verfügung stehen und das über Node.js auf Ihrem Terminal ausgeführt werden kann. Es sollte nicht notwendig sein, PHP zu minimieren, da der Code auf der Serverseite ausgeführt wird und nur seine HTML-Ausgabe an den Client gesendet wird.

Verfügbare Plugins finden Sie hier

konapun
quelle
2
Beachten Sie, dass die Auswahl von Grunt eine Lernkurve mit sich bringt.
Rick-777,
1

Ich habe gute Ergebnisse mit Closure Compiler erzielt .

Der Closure Compiler ist ein Tool, mit dem Sie JavaScript schneller herunterladen und ausführen können. Anstatt von einer Quellsprache in Maschinencode zu kompilieren, kompiliert es von JavaScript zu besserem JavaScript. Es analysiert Ihr JavaScript, analysiert es, entfernt toten Code und schreibt neu und minimiert, was übrig bleibt. Außerdem werden Syntax, Variablenverweise und Typen überprüft und Warnungen vor häufigen JavaScript-Problemen ausgegeben.

Es wurde von Google entwickelt und in Java geschrieben. Es ist für Debian-basierte Systeme verpackt closure-compilerund kann problemlos auf Ubuntu-Systemen installiert werden. Da keine grafische Benutzeroberfläche verwendet wird, ist das leichtgewichtigere default-jre-headlessPaket erforderlich .

Es ist langsamer als der YUI-Kompressor, aber die resultierende Dateigröße ist (geringfügig) kleiner. Außerdem werden nützliche Warnmeldungen ausgegeben, ähnlich wie bei Compilern für andere Programmiersprachen.

Dokumentation: Erste Schritte

Verwendung:

closure-compiler --js input.js --js_output_file output.js
Anthony G - Gerechtigkeit für Monica
quelle
Der Abschluss ist wirklich gut, wenn Sie Ihr Projekt damit starten und Ihre Objekte in separaten Dateien usw. erweitern. Aber für ein vorhandenes Projekt ist es ziemlich schrecklich.
Alexis Wilke
-1

Eine andere Option ist die Verwendung des npxBefehls von Node.js. npxFührt einen Befehl eines Node.js-Pakets aus, ohne es explizit zu installieren.

# Minify JS
npx -p uglify-js uglifyjs -o app.min.js app.js common.js

# Minify CSS
npx clean-css-cli -o style.min.css css/bootstrap.css style.css

# Minify HTML
npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace

# XML
npx pretty-data-cli --type xml --minify input.xml > input.min.xml
Ninh Pham
quelle