Zminimalizuj narzędzie, które można wykonać za pomocą terminala


35

Szukam narzędzia lub sposób do Minify (podobny do Compress mojego kodu i tym pytaniem na stosie) cały kod w moim .xml, .css, .htmli .jspliki przez Ubuntu Terminal. W końcu skryptuję ten proces, ale w tej chwili chciałbym po prostu znaleźć coś do przetestowania. Czy istnieje narzędzie, którego można użyć do kompresji wszystkich tych formatów plików przez terminal?


2
Próbowałeś czegoś takiego tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
roadmr

1
Chcę skompresować sam kod. Coś jak CSS Minify
DᴀʀᴛʜVᴀᴅᴇʀ

1
Więc myślę, że nie prosisz o kompresję . Kompresując zwykłe pliki (niemedialne, takie jak muzyka / filmy), bierzemy pod uwagę tylko kompresję bezstratną, ale szukasz sposobu na zminimalizowanie białych znaków (w których tracisz te dane). A ponieważ minimalizowanie jest stratne, nie można dekompresować (ponieważ nie jest odwracalne). Dla mnie to sprawia, że ​​„niejasne jest to, o co pytasz”.
gertvdijk

Odpowiedzi:


43

To nie jest najlepsza opcja, ale prawdopodobnie jest najłatwiejsza. Kompresor YUI od dawna uważany jest za najlepszy kompresor dla Javascript i CSS, oferujący 20-40% ulepszeń w stosunku do innych minifikatorów.

Od tego czasu został zastąpiony nowszymi projektami, takimi jak Uglify.JS (co prawdopodobnie zasugeruje Grunt), ale nadal dość łatwo jest uruchomić się w Ubuntu.

sudo apt-get install yui-compressor

to jest to! Teraz możesz biegać, yui-compressor myfile.jsa on wykona swoją magię, po prostu nie tak dobrze lub tak wygodnie, jak poprawnie zainstalować stos Node / Grunt / Uglify + YUI.


15
Nie każdy, kto używa js lub css, korzysta z node.js lub wykonuje projekty node.js. Jest to kolejna platforma do nauki i konfiguracji, jeśli chcesz używać chrząknięcia. Tak chrząknięcie jest fajne. Ale teraz mamy już wystarczająco dużo do nauczenia się, zanim będziemy mogli zacząć kodować. Zatem węzeł / chrząknięcie nie zawsze jest wygodne. :) Sam spróbuję zasugerować kompresor Yui.
Bill Rosmus

2
@BillR W pewnym sensie zgadzam się z tym sentymentem, ale chociaż nie mam żadnych projektów node.js, nadal używam rzeczy takich jak lessc i uglify.js, ponieważ są to najlepsze narzędzia do tego zadania . Nie używam Grunta, ponieważ zastąpiłem go swoim własnym oprzyrządowaniem, ale dla samej pracy nigdy nie kłębiłbym się tylko po to, aby uniknąć Węzła. Jeśli chcesz pozostać w branży, musisz być na bieżąco z najlepszymi praktykami.
Oli

Zakładasz, że używanie węzła jest najlepszą praktyką. Może w twoim świecie, który nie jest światem wszystkich.
Bill Rosmus,

2
Masz na mnie pięć lat, ale nie wiem o co ci chodzi ... Czy nadal używasz statycznego HTML4 z odrobiną skryptów „DHTML” i perl CGI? Nadal używasz ASP? A może zmieniłeś rzeczy, gdy udostępniono lepsze technologie? Mamy tu do czynienia z dwoma odrębnymi punktami; robi się trochę głupio. Nie obchodzi mnie, czy nie lubisz przekwalifikowywania się, ale zależy mi na tym, abyś zrozumiał, że użycie more-csspakietu NPM w celu zminimalizowania CSS jest bardziej uciążliwe niż używanie kompresora yui. To nie jest To tylko kolejne polecenie, które robi to samo lepiej.
Oli

1
Zauważ, że dzięki tej instalacji zainstalujesz również openjkd, czego nikt nie chciałby w systemie.
reallynice

12

Możesz łatwo zminimalizować js za pomocą węzła i uglify-js z wiersza poleceń:

  • zainstaluj uglify-js przy pomocy npm install uglify-js -g

  • Uruchom uglifyjs app-test.js > app-test.min.js


Dla css sugerowałbym przykładowe użycie clean-css (prawdopodobnie najbardziej stabilnego minizatora css na npm)
:

cleancss -o public-min.css public.css

Jeśli chodzi o html, zwykle minimalizacja nie jest zwykle warta czasu, który poświęcasz na jego konfigurację, ale próbowałem html-minifier i jest to niesamowite narzędzie.

Cokolwiek robisz, pamiętaj, aby zgarnąć to, co serwujesz.


1
uglify można bezpośrednio zainstalować zsudo apt-get install node-uglify
Gery

Zauważ, że uglify-js jest przeznaczony tylko dla Javascript, a nie dla css lub innych plików.
Jose Gómez,

2
@Gery, jeśli chcesz zainstalować uglifyrazem z apttobą, również musisz zainstalować node-legacy, więc uruchomsudo apt install node-uglify node-legacy
mxdsp

Zauważ, że cleancssnarzędzie CLI jest teraz w clean-css-clipakiecie.
jbg

7

Użyj minify - w przeciwieństwie do innych sugestii, to narzędzie minimalizuje znacznie więcej typów plików:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml

Bardzo źle radzi sobie z javascript.
Federico

2

Nie ma powodu, aby minimalizować pliki php (z wyjątkiem tego, że masz bardzo ograniczone miejsce na dysku i chcesz z niego korzystać).

Jeśli możesz dodać cel (co chcesz osiągnąć i dlaczego?), Ktoś może pokazać ci lepszy sposób.

Pliki JS i CSS są minimalizowane w czasie wykonywania i buforowane w większości projektów internetowych. Istnieje minify ( https://github.com/mrclay/minify ), „biblioteka” php, która jest w stanie to zrobić. (można również wykonać przy pomocy php z terminala)

Należy jednak pamiętać, że jeden duży plik javascript nie musi ładować się szybciej niż 5 małych plików. Jeśli potrzebujesz powodu i rozwiązania dla tego oświadczenia, spójrz na http://headjs.com/

Niech źródło będzie z tobą ...


1

Poleciłbym użyć Grunt.js . Jest to narzędzie do automatyzacji, które ma minifikatory dostępne jako wtyczki i może być uruchamiane w twoim terminalu przez Node.js. Nie powinno być konieczne minimalizowanie PHP, ponieważ kod jest wykonywany po stronie serwera, a tylko jego dane wyjściowe HTML są wysyłane do klienta.

Dostępne wtyczki można znaleźć tutaj


2
Pamiętaj, że wybór Grunta oznacza krzywą uczenia się.
Rick-777

1

Mam dobre wyniki z Kompilatorem zamknięcia .

Kompilator zamknięcia to narzędzie do szybszego pobierania i uruchamiania JavaScript. Zamiast kompilować z języka źródłowego na kod maszynowy, kompiluje z JavaScript do lepszego JavaScript. Analizuje JavaScript, analizuje go, usuwa martwy kod i przepisuje oraz minimalizuje to, co zostało. Sprawdza także składnię, odwołania do zmiennych i typy oraz ostrzega przed typowymi pułapkami JavaScript.

Jest opracowany przez Google i napisany w Javie. Jest spakowany dla systemów opartych na Debianie closure-compileri jest łatwy do zainstalowania w systemach Ubuntu. Ponieważ nie używa GUI, wymaga bardziej lekkiego default-jre-headlesspakietu.

Jest wolniejszy niż kompresor YUI, ale wynikowy rozmiar pliku jest (nieco) mniejszy. Drukuje także przydatne komunikaty ostrzegawcze, podobne do kompilatorów dla innych języków programowania.

Dokumentacja: Pierwsze kroki

Stosowanie:

closure-compiler --js input.js --js_output_file output.js

Zamknięcie jest naprawdę dobre, jeśli rozpoczniesz z nim projekt i rozszerzysz obiekty w osobne pliki itp. Ale w przypadku istniejącego projektu jest to raczej okropne.
Alexis Wilke,

-1

Inną opcją jest użycie npxpolecenia z Node.js. npxuruchamia polecenie pakietu Node.js bez jawnej instalacji.

# 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.