Tingkat Kompilasi Closure Compiler

Closure Compiler memungkinkan Anda memilih dari tiga tingkat kompilasi, mulai dari penghapusan sederhana spasi dan komentar hingga transformasi kode yang agresif.

WHITESPACE_ONLY

Tingkat kompilasi WHITESPACE_ONLY menghapus komentar dari kode Anda dan juga menghapus jeda baris, spasi yang tidak perlu, tanda baca yang tidak relevan (seperti tanda kurung dan titik koma), dan spasi putih lainnya. JavaScript output secara fungsional identik dengan JavaScript sumber.

Transpilasi fitur bahasa akan tetap terjadi jika mode bahasa output yang diminta berbeda dengan mode bahasa input. Lihat --language_in dan --language_out di Tanda dan Opsi.

Tingkat kompilasi ini memberikan kompresi paling sedikit dari ketiga tingkat.

SIMPLE_OPTIMIZATIONS

Tingkat kompilasi SIMPLE_OPTIMIZATIONS melakukan penghapusan spasi kosong dan komentar yang sama seperti WHITESPACE_ONLY, tetapi juga melakukan pengoptimalan dalam ekspresi dan fungsi, termasuk mengganti nama variabel lokal dan parameter fungsi menjadi nama yang lebih pendek. Mengganti nama variabel menjadi nama yang lebih pendek akan membuat kode menjadi jauh lebih kecil. Karena tingkat SIMPLE_OPTIMIZATIONS hanya mengganti nama simbol yang bersifat lokal untuk fungsi, tingkat ini tidak mengganggu interaksi antara JavaScript yang dikompilasi dan JavaScript lainnya.

Kompilasi dengan SIMPLE_OPTIMIZATIONS selalu mempertahankan fungsi JavaScript yang valid secara sintaksis, asalkan kode tidak mengakses variabel lokal menggunakan nama string (dengan menggunakan pernyataan eval(), misalnya, atau dengan memanggil toString pada fungsi).

SIMPLE_OPTIMIZATIONS adalah tingkat kompilasi default.

ADVANCED_OPTIMIZATIONS

Tingkat kompilasi ADVANCED_OPTIMIZATIONS melakukan transformasi yang sama seperti SIMPLE_OPTIMIZATIONS, tetapi menambahkan berbagai transformasi global yang lebih agresif untuk mencapai kompresi tertinggi dari ketiga tingkat tersebut. Level ADVANCED_OPTIMIZATIONS mengompresi JavaScript jauh melampaui yang dapat dilakukan dengan alat lain.

Untuk mengaktifkan kompresi ekstrem ini, ADVANCED_OPTIMIZATIONS membuat asumsi yang kuat tentang kode yang dikompilasi. Jika kode Anda tidak sesuai dengan asumsi tersebut, ADVANCED_OPTIMIZATIONS akan menghasilkan kode yang tidak berjalan.

Misalnya, kode yang dikompilasi dengan ADVANCED_OPTIMIZATIONS mungkin tidak berfungsi dengan kode yang tidak dikompilasi kecuali jika Anda melakukan langkah-langkah khusus untuk memastikan interoperabilitas. Jika Anda tidak menandai fungsi dan properti eksternal yang dirujuk dalam kode, Closure Compiler akan mengganti nama referensi dalam kode Anda secara tidak tepat, sehingga menyebabkan ketidakcocokan antara nama dalam kode Anda dan dalam kode eksternal.

Untuk mempelajari lebih lanjut cara menyiapkan kode untuk ADVANCED_OPTIMIZATIONS, baca Kompilasi Lanjutan dan Eksternal.

Transformasi ADVANCED_OPTIMIZATIONS mencakup:

  • penggantian nama yang lebih agresif:

    Kompilasi dengan SIMPLE_OPTIMIZATIONS hanya mengganti nama parameter dan variabel dalam fungsi. ADVANCED_OPTIMIZATIONS juga mengganti nama variabel global, nama fungsi, dan properti.

  • penghapusan kode tidak terpakai:

    Kompilasi dengan ADVANCED_OPTIMIZATIONS menghapus kode yang terbukti tidak dapat dijangkau. Hal ini sangat berguna jika dikombinasikan dengan library besar. Jika Anda hanya menggunakan beberapa fungsi dari file library besar, compiler dapat menghapus semua fungsi kecuali fungsi tersebut dari outputnya.

  • penyisipan inline global:

    Kompilasi dengan ADVANCED_OPTIMIZATIONS menggantikan beberapa panggilan fungsi dengan isi fungsi. Transformasi ini dikenal sebagai "inline". Compiler hanya menyisipkan fungsi jika compiler menentukan bahwa penyisipan aman dan menghemat ruang. Kompilasi dengan ADVANCED_OPTIMIZATIONS juga menyisipkan konstanta dan beberapa variabel saat compiler menentukan bahwa hal itu dapat dilakukan dengan aman.

Cara Menetapkan Tingkat Kompilasi

Untuk menetapkan tingkat kompilasi di aplikasi Closure Compiler, sertakan flag command line --compilation_level dengan nilai WHITESPACE_ONLY, SIMPLE, atau ADVANCED, seperti pada perintah berikut:

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js hello.js