Utilia

JavaScript formater i minifikator

Sredi minifikovan JavaScript, minifikuj ga pomoću Tersera ili proveri sintaksu sa tačnim redom i kolonom svake greške. Radi samo u tvom pregledaču.

Opcije minifikacije

Kako da formatiraš ili minifikuješ JavaScript

  1. Nalepi kod ili klikni Otvori fajl da učitaš .js, .mjs ili .jsx fajl (do 10 MB).
  2. Izaberi Uvlačenje i, ako voliš Allman stil, označi Vitičaste zagrade u svom redu.
  3. Klikni Formatiraj (sredi) da kod postane čitljiv.
  4. Da ga smanjiš, podesi Opcije minifikacije i klikni Minifikuj. Ako samo tražiš greške, klikni Proveri sintaksu.
  5. Kopiraj ili preuzmi rezultat. Statusni red prikazuje veličinu pre i posle i procenat ušteđenog prostora.

Kod se samo čita i pretvara, nikada se ne izvršava: ništa što nalepiš ne pokreće se na ovoj stranici.

Formatiranje pomoću js-beautify

Formatiraj (sredi) koristi js-beautify. Stavlja po jednu naredbu u red, uvlači blokove, dodaje razmake oko operatora i posle ključnih reči i zadržava najviše jedan prazan red tamo gde si ga imao. Razume i modernu sintaksu (klase, strelaste funkcije, šablonske stringove, async/await) i JSX. To je najbrži način da pročitaš minifikovanu biblioteku ili jednoredni isečak kopiran sa veb-stranice.

Formatiranje menja samo razmake. Ne proverava da li je kod ispravan: zagrada koja nedostaje jednostavno daje čudno uvlačenje. Za to koristi Proveri sintaksu.

Minifikacija pomoću Tersera

Minifikuj koristi Terser, minifikator koji koristi većina alata za izgradnju JavaScripta. Pošto je velik, preuzima se tek kad prvi put klikneš Minifikuj ili Proveri sintaksu. Opcije se direktno preslikavaju na Terser podešavanja:

  • ES modul (import/export) parsira kod kao modul (module: true): važi strogi režim, a nazivi na vrhu fajla su privatni, pa mogu da se preimenuju, a neupotrebljeni da se uklone. Ostavi neoznačeno za klasičan skript čije globalne funkcije koriste drugi skriptovi.
  • Kompresuj (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 promenljivih (mangle) preimenuje lokalne promenljive i parametre u jedno ili dva slova. Globalni nazivi i svojstva objekata se nikada ne preimenuju.
  • Zadrži komentare o licenci čuva komentare koji počinju sa /*! ili sadrže @license ili @preserve. Svi ostali komentari se uklanjaju.

Minifikacija ne može da promeni šta kod radi, ali kod koji se oslanja na nazive funkcija (fn.name) ili na eval može posle preimenovanja da se ponaša drugačije. U tom slučaju ukloni oznaku sa Skrati nazive promenljivih.

Sintaksne greške sa redom i kolonom

Kad Terser ne može da parsira kod, Minifikuj i Proveri sintaksu prikazuju poruku o grešci sa redom i kolonom, na primer „Red 12, kolona 8 – Syntax error: Unexpected token punc «)»“. Kolona broji znakove od 1. Tipičan uzrok je zagrada koja nedostaje ranije u fajlu, pa pogledaj i redove neposredno pre prijavljenog mesta.

Česta pitanja

Da li se moj kod nekuda otprema?

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

Mogu li da minifikujem TypeScript?

Ne. Terser prihvata samo JavaScript. Prvo prevedi TypeScript u JavaScript, pa minifikuj rezultat. Formatiranje jednostavnog TypeScript-a pomoću Formatiraj (sredi) često radi, ali tipske anotacije mogu imati čudne razmake.

Zašto moj minifikovani kod izgleda drugačije od onoga što sam napisao?

Kompresuj izračunava konstantne izraze, ugrađuje vrednosti koje se koriste jednom i uklanja nedostižan kod. Rezultat se ponaša isto. Ukloni oznaku sa Kompresuj da se uklone samo razmaci i komentari.

Da li „ES modul“ mora da odgovara mom kodu?

Da. Kod sa import ili export treba minifikovati kao modul. Klasičan skript minifikovan kao modul mogao bi da izgubi globalne funkcije koje pozivaju drugi skriptovi, jer se nazivi na vrhu fajla tada tretiraju kao privatni.

Šta je sa JSON-om?

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