Apa kompresor JavaScript terbaik yang tersedia? Saya mencari alat yang:
- mudah digunakan
- memiliki tingkat kompresi yang tinggi
- Menghasilkan hasil akhir yang andal (tidak mengacaukan kode)
Apa kompresor JavaScript terbaik yang tersedia? Saya mencari alat yang:
Jawaban:
Saya baru-baru ini merilis UglifyJS , kompresor JavaScript yang ditulis dalam JavaScript (berjalan pada platform NodeJS Node.js , tetapi dapat dengan mudah dimodifikasi untuk dijalankan pada mesin JavaScript apa pun, karena tidak perlu Node.js
internal). Ini jauh lebih cepat daripada Kompresor YUI dan Google Penutupan , kompres lebih baik daripada YUI pada semua skrip yang saya uji, dan lebih aman daripada Closure (tahu untuk berurusan dengan "eval" atau "dengan").
Selain penghapusan spasi putih, UglifyJS juga melakukan hal berikut:
foo["bar"]
menjadi foo.bar
jika memungkinkanPS: Oh juga bisa "mempercantik". ;-)
Meninjau kembali pertanyaan ini beberapa tahun kemudian, UglifyJS , tampaknya menjadi pilihan terbaik seperti sekarang.
Seperti yang dinyatakan di bawah, ini berjalan pada platform NodeJS, tetapi dapat dengan mudah dimodifikasi untuk dijalankan di mesin JavaScript apa pun.
--- Jawaban lama di bawah ---
Google merilis Closure Compiler yang tampaknya menghasilkan file terkecil sejauh yang terlihat di sini dan di sini
Sebelumnya berbagai opsi adalah sebagai berikut
Pada dasarnya Packer melakukan pekerjaan yang lebih baik pada kompresi awal, tetapi jika Anda akan melakukan gzip file sebelum mengirimnya pada kabel (yang seharusnya Anda lakukan) Kompresor YUI mendapatkan ukuran akhir terkecil.
Tes dilakukan pada kode jQuery btw.
@ daniel james menyebutkan di komentar compressorrater yang menunjukkan Packer memimpin grafik dalam kompresi terbaik, jadi saya kira ymmv
\uxxxx
literal secara default .. gunakan mis --charset UTF-8
( gunakan jika (Anda yakin Anda membiarkan browser mengetahuinya entah bagaimana)
Kompresor YUI adalah cara untuk pergi. Ini memiliki tingkat kompresi yang hebat, diuji dengan baik dan sedang digunakan di antara banyak situs top, dan, yah, secara pribadi direkomendasikan oleh saya.
Saya telah menggunakannya untuk proyek-proyek saya tanpa satu kesalahan JavaScript atau cegukan. Dan memiliki dokumentasi yang bagus.
Saya tidak pernah menggunakan kemampuan kompresi CSS-nya, tetapi mereka ada juga. Kompresi CSS juga berfungsi dengan baik.
Catatan: Walaupun Dean Edwards / packer / mencapai tingkat kompresi yang lebih baik daripada Kompresor YUI, saya mengalami beberapa kesalahan JavaScript saat menggunakannya.
npm install packer
. (= D
Saya menggunakan ShrinkSafe dari proyek Dojo - ini luar biasa karena ia benar-benar menggunakan penerjemah JavaScript ( Badak ) untuk berurusan dengan menemukan simbol dalam kode dan memahami ruang lingkup mereka, dll. Yang membantu memastikan bahwa kode tersebut akan berfungsi ketika keluar. ujung lainnya, berbeda dengan banyak alat kompresi yang menggunakan regex untuk melakukan hal yang sama (yang tidak dapat diandalkan).
Saya benar-benar memiliki tugas MSBuild dalam Proyek Penerapan Web dalam solusi Visual Studio saya saat ini yang menjalankan skrip yang pada gilirannya menjalankan semua file JS solusi melalui ShrinkSafe sebelum kami menyebarkan dan bekerja dengan cukup baik.
EDIT: Omong-omong, "terbaik" terbuka untuk diperdebatkan, karena kriteria untuk "terbaik" akan bervariasi tergantung pada kebutuhan proyek. Secara pribadi, saya pikir ShrinkSafe adalah keseimbangan yang baik; untuk beberapa orang yang berpikir ukuran terkecil == terbaik, itu tidak akan cukup.
EDIT: Perlu dicatat bahwa kompresor YUI juga menggunakan Badak.
Jika Anda menggunakan Packer, cukup jauh opsi 'menyusut variabel' dan gzip kode yang dihasilkan. Opsi base62 hanya untuk jika server Anda tidak dapat mengirim file yang di-gzip. Packer dengan 'shrink vars' menghasilkan kompresi YUI yang lebih baik, tetapi dapat memperkenalkan bug jika Anda melewatkan tanda titik koma di suatu tempat.
base62 pada dasarnya adalah gzip orang miskin, itulah sebabnya gzipping kode base62-ed memberi Anda file yang lebih besar daripada gzipping kode shrink-var-ed.
Dalam mencari peluru perak, temukan pertanyaan ini. Untuk Ruby on Rails http://github.com/sstephenson/sprockets
Berikut kode sumber dari HttpHandler yang melakukan itu, mungkin itu akan membantu Anda
bananascript.com digunakan untuk memberi saya hasil terbaik.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress adalah kumpulan dua aplikasi (kjscompress a csscompress) untuk menghapus spasi putih kosong dan komentar dari file yang berisi JavaScript dan CSS. Keduanya adalah aplikasi baris perintah untuk sistem operasi GNU / Linux.