Minify JavaScript
Jenis minifier yang sama dengan yang dipakai build tool, berjalan di dalam halaman ini. Sintaks modern dan modul dipahami, dan kode sumber Anda tidak pernah disimpan.
- Tidak pernah disimpan
- Tanpa antre, tanpa menunggu
- Tanpa daftar, tanpa watermark
JavaScript yang sudah di-minify muncul di sini.
Cara kerjanya
Tempel JavaScript Anda
Atau letakkan file-nya. Modul, class, dan sintaks modern semuanya dipahami.
Pilih opsinya
Ganti nama variabel lokal, buang pemanggilan console, pertahankan komentar lisensi — masing-masing punya tombol sendiri.
Salin atau unduh
Lengkap dengan ukuran sebelum dan sesudah.
Mengganti nama, menghapus, dan apa yang tidak boleh disentuh
Ada tiga hal yang terjadi, diurutkan dari yang paling kecil penghematan dan biayanya bagi Anda. Spasi dan komentar dihapus, dan itu tanpa biaya. Kode mati dihapus — cabang yang tidak pernah bisa dijalankan, variabel yang diisi tetapi tidak pernah dibaca. Dan nama lokal dipersingkat, sehingga calculateMonthlyTotal yang diberi nama dengan cermat menjadi satu huruf. Yang terakhir inilah sumber sebagian besar penghematan, sekaligus penyebab hasilnya tidak terbaca — tidak masalah untuk dirilis, tetapi tidak berguna untuk debugging.
Yang tidak boleh diganti namanya adalah apa pun yang dirujuk dunia luar berdasarkan nama, dan kesalahan di sini adalah cara minifier merusak kode. Fungsi yang diekspor, properti objek yang diakses sebagai string, apa pun yang dijangkau melalui window, dan nama yang dipakai di eval semuanya harus tetap utuh, karena ada sesuatu di tempat lain yang mencarinya berdasarkan nama yang Anda tulis. Properti khususnya dibiarkan secara default: mengganti nama user.emailAddress akan langsung rusak begitu objek itu diserialisasi ke JSON atau dibaca oleh kode yang di-minify secara terpisah.
Simpan source map atau file aslinya. Begitu nama-nama hilang, stack trace dari pengguna sungguhan terbaca sebagai error di fungsi t pada karakter 48.213, yang sama sekali tidak memberi tahu apa pun. Source map mengembalikan nama dan nomor baris asli di debugger dan di pelaporan error, dan membuatnya tidak memakan biaya karena dikirim sebagai file terpisah yang hanya dimuat saat seseorang membuka developer tools.
Komentar lisensi dipertahankan secara default, dan itu adalah sikap hukum, bukan sekadar preferensi. Banyak sekali kode open-source berlisensi permisif dengan satu syarat: pemberitahuan hak ciptanya harus ikut disertakan — MIT dan BSD sama-sama menyatakannya secara eksplisit. Menghapus komentar itu dari bundle yang berisi kode pihak ketiga membuat Anda melanggar lisensi yang mengizinkan Anda memakainya. Ukurannya hanya beberapa ratus byte.
Jika Anda butuh hal lain
Proses ini seharusnya ada di build, bukan di tab browser, dan bundler modern melakukannya secara otomatis. esbuild --minify serta Rollup atau Vite me-minify saat build, membuat source map secara otomatis, dan — yang jauh lebih penting — melakukan tree shaking, membuang ekspor dependensi yang tidak pernah Anda impor. Pada aplikasi sungguhan, penghematannya jauh lebih besar daripada yang bisa dicapai dengan me-minify file jadi.
Sebelum mengoptimalkan, ukur dulu. Bundle analyzer biasanya menunjukkan bahwa satu dependensi besar menyumbang sebagian besar isi file — library tanggal, set ikon, paket grafik yang dimuat utuh hanya untuk satu grafik. Mengganti atau memuat dependensi itu secara lazy lebih efektif daripada minify sebanyak apa pun, dan code splitting agar halaman hanya memuat yang diperlukannya lebih efektif daripada keduanya.
Pertanyaan yang sering diajukan
Apakah kode saya disimpan di suatu tempat?
Tidak, dan untuk kode sumber justru itulah intinya. Tidak ada yang disimpan dan tidak ada server yang pernah melihatnya. Menempelkan kode sumber milik perusahaan ke minifier online yang mengirimkannya ke suatu tempat adalah bentuk pengungkapan, apa pun yang dikatakan situs itu soal penyimpanan data — dan itu persis jenis hal yang dilakukan terburu-buru tanpa berpikir.
Apakah ini sama dengan minifier di build tool saya?
Hampir pasti, ya. Ini jenis minifier yang sama dengan yang dipakai webpack, Rollup, Vite, dan kebanyakan bundler lain. Bedanya hanya: minifier ini berjalan di sini, bukan sebagai sesuatu yang Anda instal.
Apakah perilaku kode saya akan berubah?
Seharusnya tidak, dan itu diperiksa, bukan diasumsikan: pengujian kami me-minify sebuah modul, mengimpor versi asli dan versi hasil minify, menjalankan keduanya, lalu membandingkan hasilnya. Yang MEMANG berubah: nama variabel lokal (kecuali Anda menonaktifkannya), ekspresi konstan yang bisa dihitung lebih dulu, dan kode mati. Apa pun yang bergantung pada nama fungsi saat runtime, atau pada Function.prototype.toString, bisa rusak akibat mangling — nonaktifkan mangling jika Anda mengandalkan salah satunya.
Apa arti “Urai sebagai modul”?
Opsi ini menentukan apakah kode Anda diurai sebagai ES module atau sebagai script biasa. Modul bisa memakai import dan export dan selalu berjalan dalam strict mode. Opsi ini aktif secara default karena begitulah kebanyakan kode modern; jika file Anda adalah script gaya lama yang memakai "with" atau mengandalkan perilaku non-strict, nonaktifkan.
Perlukah saya membuang pemanggilan console?
Untuk produksi, biasanya ya — pemanggilan itu hanya gangguan, dan bisa membocorkan detail internal kepada siapa pun yang membuka developer tools. Opsi ini nonaktif secara default karena diam-diam menghapus kode bukanlah hal yang boleh dilakukan alat tanpa diminta.
Apakah komentar lisensi dipertahankan?
Ya, secara default. Komentar yang diawali /*! dan komentar yang berisi @license atau @preserve dipertahankan, karena menghapusnya dari library berlisensi MIT milik orang lain merupakan pelanggaran lisensi. Komentar biasa dihapus.
Bisakah alat ini membuat source map?
Tidak di halaman ini. Source map hanya berguna jika berdampingan dengan file aslinya di URL yang diketahui, dan itu tidak cocok untuk alat tempel-dan-salin — build tool Anda adalah tempat yang tepat untuk itu.
Apakah ada batas ukuran?
Tidak ada batas tetap. Beberapa ribu baris selesai di-minify dalam waktu jauh di bawah satu detik; file bundle yang sangat besar butuh waktu lebih lama karena seluruhnya diurai sebelum ada yang diganti namanya. Jika Anda me-minify seluruh bundle produksi, build tool Anda adalah tempat yang lebih tepat — halaman ini untuk satu file atau pemeriksaan cepat.
Perlu diketahui: Mengganti nama variabel lokal membuat file lebih kecil dan hasilnya tidak terbaca, yang tidak masalah untuk dirilis tetapi tidak berguna untuk debugging — simpan source map atau file aslinya. Komentar lisensi dipertahankan secara default karena menghapusnya bisa melanggar lisensi kode yang boleh Anda pakai.
Pasang alat ini di situs Anda
Gratis untuk blog, halaman kelas, atau artikel bantuan apa pun. Tempel satu potong kode dan pengunjung Anda bisa langsung memakainya di halaman Anda.
Alat terkait
Minify CSS
Perkecil stylesheet, atau ketahui alasannya jika tidak bisa
Minify HTML
Perkecil HTML tanpa merusak halaman
Formatter JSON
Ubah JSON yang berantakan jadi mudah dibaca
Encode Base64
Ubah teks atau file menjadi Base64
Hapus Baris Duplikat
Hapus yang berulang, urutkan, dan rapikan daftar
Ubah Huruf Besar Kecil
HURUF BESAR, huruf kecil, Title Case, camelCase, dan lainnya