Terminal üzerinden çalıştırılabilen küçültme aracı


35

Ben bir araç ya da küçültmek için bir yol (benzer arıyorum sıkıştır kodumu ve bu soruya benim kod Yığın üzerine) tüm .xml, .css, .htmlve .jsUbuntu terminal üzerinden dosya. Sonunda süreci yazacağım ama şu anda sadece test etmek için bir şeyler bulmak istiyorum. Tüm bu dosya formatlarını terminalden sıkıştırmak için kullanabileceğim bir araç var mı?


2
Gibi bir şey denedin tar -czvf compressed.tar.gz *.xml *.css *.html *.phpmi?
roadmr

1
Kodun kendisini sıkıştırmak istiyorum. CSS
Minify

1
O zaman bence sıkıştırma istemiyorsun . Düzenli dosyalar üzerinde sıkıştırma (müzik / video gibi medya olmayan) ile çoğunlukla kayıpsız sıkıştırmayı göz önünde bulundururuz, ancak boşlukları en aza indirmenin (içinde bu verileri kaybettiğiniz) en aza indirmenin bir yolunu arıyoruz. Ve küçültme kayıp olduğundan, sıkıştırmayı çözemezsiniz (çünkü geri dönüşümlü değildir). Bana göre bu, “ne sorduğunuzu belirsiz” kılar.
gertvdijk

Yanıtlar:


43

Bu en iyi seçenek değil ama muhtemelen en kolay olanı. YUI kompresörünün Javascript ve CSS için en iyi kompresör olduğu düşünülüyordu, bu da diğer minifiers üzerinde% 20-40 iyileştirme sunuyor.

O zamandan beri Uglify.JS (Grunt'un muhtemelen önereceği gibi) gibi daha yeni projeler tarafından yerini aldı, ancak Ubuntu'da çalışmaya başlamak ve çalışmak oldukça kolay.

sudo apt-get install yui-compressor

Bu kadar. Şimdi koşabilirsin yui-compressor myfile.jsve sihrini yap, tam olarak değil, ya da düzgün bir şekilde kurulmuş bir Düğüm / Grunt / Uglify + YUI yığını kadar rahatça yap.


15
Js veya css kullanan herkes node.js kullanıyor ya da node.js projeleri yapıyor. Grunt kullanmak istiyorsanız öğrenmek ve yapılandırmak için başka bir çerçeve henüz. Evet hırıltılı serin. Ama şimdi bir gün, kodlamaya başlayabilmemiz için bile zaten öğrenecek çok şeyimiz var. Yani düğüm / homurdanma her zaman uygun değildir. :) Ben kendim yui-kompresör önerinizi deneyeceğim.
Bill Rosmus

2
@BillR Duygulara katılıyorum ama herhangi bir node.js projem olmasa da, yine de lessc ve uglify.js gibi şeyler kullanıyorum çünkü bunlar iş için en iyi araç . Grunt kullanmıyorum çünkü kendi takımlarım ile değiştirdim ama asıl iş için hiçbir zaman sadece Düğümden kaçınmak için uğraşmam. Endüstride kalmak istiyorsanız, en iyi uygulamalara ayak uydurmanız gerekir.
Oli

Düğümü kullanmanın en iyi yöntem olduğu varsayımını yapıyorsunuz. Belki dünyanızda ki bu herkesin dünyası değildir.
Bill Rosmus

2
Bende beş yıl var, ama ne anlama geldiğini bilmiyorum ... Hala biraz "DHTML" ve perl CGI betikleri ile statik HTML4 kullanıyor musunuz? Hala ASP kullanıyor musunuz? Yoksa daha iyi teknolojiler kendilerini erişilebilir kıldıkça işleri değiştirdiniz mi? Bu konuda iki ayrı noktamız var; biraz aptallaşıyor. Yeniden eğitmeyi sevmemeniz umrumda değil, ancak more-cssCSS'nizi küçültmek için NPM paketini kullanmanın yui-kompresör kullanmaktan daha müdahaleci olması gerektiğini umursamıyorum . Değil. Aynı şeyi daha iyi yapan başka bir komut.
Oli

1
Bu kurulumla birisinin sistemde istemeyeceği bir şey olan openjkd'yi de kuracağınızı unutmayın.
reallynice

12

Js düğüm ve uglify-js ile komut satırından kolayca küçültebilirsiniz :

  • uglify-js ile yükle npm install uglify-js -g

  • koş uglifyjs app-test.js > app-test.min.js


Css için temiz css (npm'de muhtemelen en kararlı css daha ucuzdur)
örnek kullanımını öneririm :

cleancss -o public-min.css public.css

Html söz konusu olduğunda, genellikle küçük ölçekli oluşturma genellikle yatırım için harcadığınız zamana değmez, ama html-minifier'i denedim ve bu harika bir araç.

Ne yaparsanız yapın, sunduğunuz hizmetin ne olduğunu anladığınızdan emin olun.


1
uglify doğrudan monte edilebilirsudo apt-get install node-uglify
Gery

Uglify-js'nin sadece Javascript için olduğunu ve css veya diğer dosyalar için olmadığını unutmayın.
Jose Gómez,

2
@Gery sizinle uglifybirlikte yüklemek aptisterseniz de yüklemeniz gerekir node-legacy, bu yüzden çalıştırınsudo apt install node-uglify node-legacy
mxdsp 20.03

Not cleancssCLI aracı artık clean-css-clipakete.
jbg

7

Kullanım küçültmek - diğer önerilerden farklı olarak, bu araç küçültür çok daha fazla dosya türleri:

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

Javascript ile çok zayıf bir iş yapıyor.
Federico

2

PHP dosyalarını küçültmek için hiçbir neden yoktur (çok sınırlı disk alanınız olması ve her parçasını kullanmak istemeniz dışında).

Bir hedef ekleyebilirseniz (Neyi başarmak istiyorsunuz ve neden?), Birileri size daha iyi bir yol gösterebilir.

JS ve CSS dosyaları çalışma zamanında küçültülür ve çoğu web projesinde önbelleğe alınır. Tam olarak bunu yapabilen bir php "kütüphanesi" olan küçültme ( https://github.com/mrclay/minify ) var. (Ayrıca terminalden php ile yapılabilir)

Ancak, bir büyük javascript dosyasının 5 küçük dosyadan daha hızlı yüklenmesine gerek olmadığını unutmayın. Bu ifade için bir nedene ve çözüme ihtiyacınız varsa, http://headjs.com/ adresine bir göz atın.

Kaynak seninle olsun ...


1

Grunt.js kullanmanızı tavsiye ederim . Minifi eklentileri eklenti olarak mevcut olan ve terminalinizde Node.js. ile çalıştırılabilen bir otomasyon aracıdır. Sunucu tarafında kod yürütülürken ve yalnızca HTML çıktısı istemciye gönderilirken PHP'nin küçültülmesi gerekli olmamalıdır.

Mevcut eklentileri burada bulabilirsiniz.


2
Grunt'u seçmenin bir öğrenme eğrisi gerektirdiğini unutmayın.
Rick-777

1

Closure Compiler ile iyi sonuçlar aldım .

Closure Compiler, JavaScript'i indirmeyi ve daha hızlı çalışmasını sağlayan bir araçtır. Kaynak bir dilden makine koduna derlemek yerine, JavaScript'ten daha iyi JavaScript'e derlenir. JavaScript'inizi ayrıştırır, analiz eder, ölü kodu siler ve geriye kalanları en aza indirir ve en aza indirir. Aynı zamanda sözdizimini, değişken referansları ve türleri kontrol eder ve yaygın JavaScript tuzakları hakkında uyarır.

Google tarafından geliştirildi ve Java ile yazılmış. Debian tabanlı sistemler için paketlenmiştir closure-compilerve Ubuntu sistemlerine kolayca yüklenir. Bir GUI kullanmadığından, daha hafif bir default-jre-headlesspaket gerektirir .

YUI kompresörünün yavaştır ancak elde edilen dosya boyutu (biraz) daha küçüktür. Ayrıca, diğer programlama dilleri için derleyicilere benzer, yararlı uyarı mesajları basar.

Belgeler: Başlarken

Kullanımı:

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

Projenizi onunla başlatırsanız ve nesnelerinizi ayrı dosyalara vb. Eklerseniz, kapatma gerçekten iyidir. Ancak mevcut bir proje için oldukça korkunç.
Alexis Wilke

-1

Başka bir seçenek de npxNode.js. komutundan komut kullanmaktır. npxaçıkça yüklemeden Node.js paketinin komutunu çalıştırır.

# 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.