Utilia

JavaScript formater i minifikator

Uljepšaj minifikovani JavaScript, minifikuj ga pomoću Tersera ili provjeri sintaksu s tačnim redom i kolonom greške. Radi samo u tvom pregledniku.

Opcije minifikacije

Kako formatirati ili minifikovati JavaScript

  1. Zalijepi svoj kod ili klikni Otvori datoteku da učitaš .js, .mjs ili .jsx datoteku (do 10 MB).
  2. Odaberi Uvlačenje i, ako preferiraš Allman stil, označi Vitičaste zagrade u zasebnom redu.
  3. Klikni Formatiraj (uljepšaj) da kod učiniš čitljivim.
  4. Da ga smanjiš, podesi Opcije minifikacije i klikni Minifikuj. Da samo potražiš greške, klikni Provjeri sintaksu.
  5. Kopiraj ili preuzmi rezultat. Red statusa prikazuje veličinu prije i poslije te postotak uštede.

Kod se samo čita i transformiše, nikada ne izvršava: ništa što zalijepiš ne izvršava se na ovoj stranici.

Uljepšavanje pomoću js-beautify

Formatiraj (uljepšaj) koristi js-beautify. Stavlja jednu naredbu u red, uvlači blokove, dodaje razmake oko operatora i iza ključnih riječi te zadržava do jednog praznog reda tamo gdje si ga imao. Razumije i modernu sintaksu (klase, arrow funkcije, template literale, async/await) i JSX. To je najbrži način da pročitaš minifikovanu biblioteku ili jednoredni isječak kopiran s neke web-stranice.

Uljepšavanje mijenja samo razmake. Ne provjerava je li kod ispravan: zagrada koja nedostaje jednostavno daje čudno uvlačenje. Za to koristi Provjeri sintaksu.

Minifikacija pomoću Tersera

Minifikuj koristi Terser, minifikator koji koristi većina JavaScript alata za izgradnju. Pošto je velik, preuzima se tek kad prvi put klikneš Minifikuj ili Provjeri sintaksu. Opcije se direktno preslikavaju u Terserove postavke:

  • ES modul (import/export) parsira kod kao modul (module: true): primjenjuje se strogi način, a nazivi na najvišem nivou su privatni, pa se mogu preimenovati, a neupotrijebljeni ukloniti. Ostavi neoznačeno za klasičnu skriptu čije globalne funkcije koriste druge skripte.
  • Sažmi (compress) prepisuje kod u kraći ekvivalentan kod: izračunavanje konstanti (2*60 postaje 120), uklanjanje mrtvog koda, spajanje var deklaracija, kraći uslovi.
  • Skrati nazive varijabli (mangle) preimenuje lokalne varijable i parametre u jedno ili dva slova. Globalni nazivi i svojstva objekata se nikada ne preimenuju.
  • Zadrži komentare s licencom zadržava komentare koji počinju s /*! ili sadrže @license ili @preserve. Svi ostali komentari se uklanjaju.

Minifikacija ne može promijeniti šta kod radi, ali kod koji se oslanja na nazive funkcija (fn.name) ili na eval može se ponašati drugačije nakon preimenovanja. U tom slučaju ukloni oznaku s Skrati nazive varijabli.

Sintaksne greške s redom i kolonom

Kad Terser ne može parsirati kod, Minifikuj i Provjeri sintaksu prikazuju poruku o grešci s redom i kolonom, na primjer „Red 12, kolona 8 – Sintaksna greška: Unexpected token punc «)»“. Kolona broji znakove od 1. Tipičan uzrok je zagrada koja nedostaje ranije u datoteci, pa pogledaj i redove neposredno prije prijavljene pozicije.

Česta pitanja

Šalje li se moj kod bilo kuda?

Ne. I js-beautify i Terser rade u tvom pregledniku, a tvoj kod ostaje na tvom računaru.

Mogu li minifikovati TypeScript?

Ne. Terser prihvata samo JavaScript. Prvo kompajliraj TypeScript u JavaScript, pa minifikuj izlaz. Formatiranje jednostavnog TypeScripta pomoću Formatiraj (uljepšaj) često radi, ali anotacije tipova mogu imati neobične razmake.

Zašto se moj minifikovani kod razlikuje od onoga što sam napisao?

Sažmi izračunava konstantne izraze, umeće vrijednosti koje se koriste jednom i uklanja nedostižan kod. Rezultat se ponaša isto. Ukloni oznaku sa Sažmi da se uklone samo razmaci i komentari.

Mora li „ES modul“ odgovarati mom kodu?

Da. Kod s import ili export treba minifikovati kao modul. Klasična skripta minifikovana kao modul mogla bi izgubiti globalne funkcije koje pozivaju druge skripte, jer se nazivi na najvišem nivou tada tretiraju kao privatni.

Šta je s JSON-om?

JSON je ispravan JavaScript, pa oba dugmeta prihvataju, ali namjenski JSON formater daje bolje poruke o greškama i sortira ključeve.