Pemampat JavaScript

Contoh kecil mengecut daripada 68 kepada 40 bait (41.2% lebih kecil) dengan membuang komen dan ruang kosong sahaja: function hello(name){return"Hi, "+name;}

Adakah masalah anda selesai?
Pilih kami di Google

Cara guna

  1. Tampal JavaScript anda ke dalam kotak input.
  2. Biarkan "Kekalkan komen lesen" hidup jika fail anda ada pengepala yang mesti kekal. Matikan untuk membuang setiap komen.
  3. Baca saiz sebelum dan selepas, kemudian salin kod yang dimampatkan.

Cara kiraan

Alat ini memecahkan kod kepada token dan menulisnya semula dengan ruang kosong paling sedikit yang masih dibaca sama. Ia tidak pernah mengubah token, jadi string, regex (regular expression), template literal, nombor dan nama keluar sama seperti ketika masuk.

Ia tidak menamakan semula pemboleh ubah, memendekkan nama sifat, membuang kod mati atau menukar sintaks. Itulah sebabnya penjimatannya lebih kecil daripada pemampat penuh.

Satu ruang kekal di mana dua token akan bercantum, seperti dalam "return x", "a in b", "a + +b" dan "1 .toString()". Garis condong dibaca sebagai regex atau pembahagian berdasarkan token sebelumnya, termasuk selepas kurungan penutup pengepala if, while atau for.

Baris baharu dibuang hanya di tempat yang tidak boleh mengubah atur cara, contohnya selepas kurungan pembuka, koma, koma bertitik atau operator. Di mana JavaScript boleh menyisipkan koma bertitik secara automatik, seperti selepas pernyataan tanpa koma bertitik, selepas return, atau sebelum baris yang bermula dengan ( atau [, baris baharu dikekalkan. Kod yang sudah menamatkan pernyataan dengan koma bertitik mengecut menjadi sangat sedikit baris.

Alat ini memberi amaran tentang string, template atau komen yang tidak ditutup, dan kurungan kerinting yang tidak pernah ditutup. Semak kod asal apabila anda melihat amaran.

Soalan lazim

Adakah kod yang dimampatkan berfungsi sama?

Sepatutnya begitu, kerana hanya ruang kosong dan komen yang berubah dan token kekal serupa. Baris baharu yang bergantung pada penyisipan koma bertitik automatik dikekalkan. Jalankan ujian anda pada hasilnya sebelum melancarkan, seperti dengan mana-mana langkah binaan.

Mengapa sesetengah baris baharu masih ada?

JavaScript boleh menyisipkan koma bertitik pada baris baharu. Apabila pernyataan tiada koma bertitik, menyambungnya dengan baris seterusnya boleh mengubah maksud atau menyebabkan ralat sintaks, jadi baris baharu dikekalkan. Menambah koma bertitik pada sumber anda membolehkan alat ini menyambung baris-baris itu.

Adakah ia menamakan semula pemboleh ubah seperti Terser atau esbuild?

Tidak. Ia hanya membuang ruang kosong dan komen. Untuk berkas paling kecil yang mungkin, gunakan alat binaan untuk pengeluaran, dan gunakan halaman ini untuk cebisan pantas, bookmarklet dan menyemak saiz.

Adakah ia mengendalikan regex dan template literal?

Ya. Regex seperti /a b[/]/g dan template seperti `x ${ y } z` disalin seperti asal, dan kod di dalam ${ } dimampatkan. Satu-satunya had ialah literal regex yang memulakan baris tepat selepas kurungan penutup yang bukan pengepala if, while atau for, yang jarang berlaku.

Adakah ia menyokong sintaks moden dan TypeScript?

Ia membaca sintaks JavaScript moden seperti fungsi anak panah, kelas, rantaian pilihan dan medan persendirian, kerana ia tidak perlu memahaminya. Ia tidak menghurai TypeScript atau JSX, jadi anotasi jenis dan teg mungkin dikendalikan sebagai teks biasa dan tidak disemak.

Adakah kod saya dimuat naik?

Tidak. Semuanya berjalan dalam pelayar anda.