Kompres JavaScript (Minify)
Contoh kecil menyusut dari 68 menjadi 40 byte (41,2% lebih kecil) hanya dengan membuang komentar dan spasi: function hello(name){return"Hi, "+name;}
Cara memakai
- Tempel kode JavaScript Anda ke kotak input.
- Biarkan "Simpan komentar lisensi" aktif jika file Anda punya header yang harus tetap ada. Matikan untuk membuang semua komentar.
- Lihat ukuran sebelum dan sesudah, lalu salin kode yang sudah dikompres.
Cara menghitung
Alat ini memecah kode menjadi token lalu menuliskannya kembali dengan spasi seminimal mungkin yang tetap terbaca sama. Token tidak pernah diubah, jadi string, regular expression, template literal, angka dan nama keluar persis seperti saat masuk.
Alat ini tidak mengganti nama variabel, memendekkan nama properti, membuang kode mati, atau mengubah sintaks. Karena itu penghematannya lebih kecil dibanding minifier penuh.
Spasi tetap ada di tempat dua token akan menyatu jika digabung, seperti "return x", "a in b", "a + +b" dan "1 .toString()". Garis miring dibaca sebagai regular expression atau pembagian berdasarkan token sebelumnya, termasuk setelah kurung tutup kepala if, while atau for.
Jeda baris hanya dibuang di tempat yang tidak mungkin mengubah program, misalnya setelah kurung buka, koma, titik koma, atau operator. Di tempat JavaScript bisa menyisipkan titik koma otomatis, seperti setelah pernyataan tanpa titik koma, setelah return, atau sebelum baris yang diawali ( atau [, jeda baris dipertahankan. Kode yang sudah mengakhiri pernyataan dengan titik koma menyusut menjadi sangat sedikit baris.
Alat ini memberi peringatan jika ada string, template atau komentar yang tidak ditutup, dan kurung kurawal yang tidak pernah ditutup. Periksa aslinya jika muncul peringatan.
Pertanyaan umum
Apakah kode hasil kompres berjalan sama?
Seharusnya ya, karena hanya spasi dan komentar yang berubah dan tokennya tetap identik. Jeda baris yang dibutuhkan penyisipan titik koma otomatis tetap dipertahankan. Jalankan tes pada hasilnya sebelum dirilis, sama seperti langkah build lainnya.
Kenapa masih ada jeda baris?
JavaScript bisa menyisipkan titik koma di jeda baris. Jika sebuah pernyataan tidak punya titik koma, menggabungkannya dengan baris berikutnya bisa mengubah makna atau menimbulkan galat sintaks, jadi jeda barisnya dipertahankan. Tambahkan titik koma di kode sumber agar baris-baris itu bisa digabung.
Apakah mengganti nama variabel seperti Terser atau esbuild?
Tidak. Alat ini hanya membuang spasi dan komentar. Untuk bundle sekecil mungkin, gunakan build tool untuk produksi, dan pakai halaman ini untuk cuplikan kode singkat, bookmarklet, dan mengecek ukuran.
Apakah regular expression dan template literal ditangani?
Ya. Regular expression seperti /a b[/]/g dan template seperti `x ${ y } z` disalin apa adanya, dan kode di dalam ${ } ikut dikompres. Satu batasnya adalah literal regular expression yang memulai baris tepat setelah kurung tutup yang bukan kepala if, while atau for, dan itu jarang terjadi.
Apakah mendukung sintaks modern dan TypeScript?
Alat ini bisa membaca sintaks JavaScript modern seperti arrow function, class, optional chaining dan private field, karena tidak perlu memahami maknanya. TypeScript dan JSX tidak di-parse, jadi anotasi tipe dan tag bisa diperlakukan sebagai teks biasa dan tidak diperiksa.
Apakah kode saya diunggah?
Tidak. Semuanya berjalan di browser Anda.