§

Options

Minify options
§

JavaScript പേസ്റ്റ് ചെയ്യുക

§

മിനിഫൈഡ് JS

js
§

ലാഭം %

  • ഒറിജിനൽ സൈസ്
  • മിനിഫൈഡ് സൈസ്
  • ലാഭം
  • ലാഭം %

AWS CloudFront, Cloudflare, Fastly വഴി ഷിപ്പ് ചെയ്യുന്ന Kerala ഡെവലപ്പർ ടീമുകൾ production release-ന് മുൻപ് JavaScript മിനിഫൈ ചെയ്യും. CDN egress transferred bytes bill ചെയ്യും, Google-ന്റെ Core Web Vitals വലിയ JS payloads penalise ചെയ്യും. Webpack, Vite, Rollup, esbuild എല്ലാം Terser ഡിഫോൾട്ട് minifier ആക്കിയിരിക്കുന്നത് ഒരേ കാരണത്തിന്: ആധുനിക JavaScript ആശ്ചര്യങ്ങൾ ഇല്ലാതെ കൈകാര്യം ചെയ്‌ത് ഏറ്റവും ചുരുക്കിയ ഔട്ട്‌പുട്ട് നൽകുന്നു.

JavaScript മിനിഫിക്കേഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു

Terser കോഡിന്റെ Abstract Syntax Tree-ൽ നാലു ഘട്ടങ്ങളിൽ പ്രവർത്തിക്കുന്നു. ഓരോ ഘട്ടവും സ്വതന്ത്രമാണ്, ഏതൊന്നും ഓൺ/ഓഫ് ചെയ്‌ത് ബാക്കിയവ തകരാതെ ഉപയോഗിക്കാം.

  1. Parse ചെയ്യുക. Terser JavaScript-നെ AST-ലേക്ക് parse ചെയ്യുന്നു. ഏത് syntax error-ഉം token, line സഹിതം ഇവിടെ ഉയരുന്നു, transform ആരംഭിക്കുന്നതിന് മുൻപ്. Parser ഏറ്റവും പുതിയ stage-4 proposals വരെ ECMAScript constructs അനുവദിക്കുന്നു.
  2. Compress ചെയ്യുക. Compressor AST-ൽ semantics-preserving transforms ബാധകമാക്കുന്നു: constant folding, dead-branch elimination, ചെറിയ pure functions ഇൻലൈൻ ചെയ്യൽ, var declarations ഒരുമിക്കൽ, if/else ternaries ആക്കൽ. ഓരോ transform-ഉം observable behaviour മാറ്റുന്നില്ല.
  3. Mangle ചെയ്യുക. Mangler local bindings-ഇനെ ഏറ്റവും ചെറിയ unique identifiers (a, b, c, …)-ലേക്ക് rename ചെയ്യുന്നു. module boundary escape ചെയ്യാത്ത names മാത്രം rename ആകുന്നു; exported bindings, property keys, global references അതേ പടി.
  4. Render ചെയ്യുക. Terser transformed AST-ഇനെ whitespace collapsed ആയ JavaScript string-ലേക്ക് print ചെയ്യുന്നു. preserve-license toggle ഓണാണെങ്കിൽ /*! … */ blocks നിലനിർത്തുന്നു, ഇല്ലെങ്കിൽ comments strip ചെയ്യും.

JavaScript മിനിഫൈ ചെയ്യേണ്ടത് എന്തുകൊണ്ട്

  • വേഗത്തിൽ പേജ് ലോഡ്. ചെറിയ scripts വേഗം parse, execute ആകുന്നു. 4G മൊബൈൽ കണക്ഷനിൽ 40% byte കുറവ് Time to Interactive-ൽ ശരിക്കും സെക്കൻഡുകൾ ലാഭിക്കുന്നു — Google PageSpeed Insights ഇത് അളക്കുന്ന പ്രധാന metric.
  • CDN egress ബിൽ കുറക്കൽ. CloudFront, Cloudflare, Fastly gigabyte egress-ന് bill ചെയ്യും. ദശലക്ഷം page views-ൽ 40% script കുറവ് ഗണ്യമായ savings ആകുന്നു — gzip, brotli-ക്ക് ശേഷവും minification token നീക്കം ചെയ്‌ത് compressor burden കുറക്കുന്നു.
  • ഈ minifier പേജ് slow ആക്കില്ല. Terser ~1 MB uncompressed. മിക്ക online minifiers-ഉം page load-ൽ ലൈബ്രറി മൊത്തം ship ചെയ്യും — Lighthouse score താഴ്‌ത്തി. ഈ പേജ് Terser lazy-load ചെയ്യുന്നത് Minify ക്ലിക്ക് ചെയ്‌തോ Live mode ഓണാക്കിയോ ഉള്ള ആദ്യ തവണ മാത്രം. Initial render Core Web Vitals thresholds-ൽ നിൽക്കുന്നു.
  • Core Web Vitals ജയിക്കൽ. Lighthouse, PageSpeed Insights വലിയ JavaScript-ഇനെ Total Blocking Time-ന്റെ direct contributor ആയി flag ചെയ്യുന്നു. Vendor libraries, application bundles മിനിഫൈ ചെയ്യൽ Lighthouse-ൽ ഏറ്റവും വേഗത്തിലുള്ള win — സാധാരണ പത്ത് അല്ലെങ്കിൽ ഇരുപത് points.

സാധാരണ ഉപയോഗങ്ങൾ

JavaScript minification ആധുനിക web project-ന്റെ ഏതാണ്ട് ഓരോ ഘട്ടത്തിലും ഉണ്ടാകും.

  • Pre-commit hooks: production-ready artifact commit ചെയ്യുന്നതിന് മുൻപ് utility scripts മിനിഫൈ ചെയ്യുക, diff logic changes കാണിക്കും, whitespace churn അല്ല.
  • Third-party widget audits: vendor embed snippet paste ചെയ്‌ത് ഇത് ഇതിനകം minified ആണോ, ദശലക്ഷം users-ന് serve ചെയ്യുന്നതിന് ചുരുക്കാൻ കഴിയുമോ എന്ന് പരിശോധിക്കുക.
  • Legacy script cleanup: current build pipeline-ന് മുൻപുള്ള jQuery plugins, hand-authored scripts source tree മാറ്റാതെ compress ചെയ്യുക.

ഒരു ഉദാഹരണം

ഒരു ചെറിയ function: function add(firstNumber, secondNumber) { /* sums two numbers */ return firstNumber + secondNumber; } console.log(add(1, 2)); — കമന്റ് ഉൾപ്പെടെ ഏകദേശം 130 bytes. Mangle, Compress ഓണാക്കി മുകളിൽ paste ചെയ്യുക. ഔട്ട്‌പുട്ട് function add(n,o){return n+o}console.log(add(1,2)); ഏകദേശം 55 bytes — 58% കുറവ്. add function name നിലനിൽക്കുന്നു, console.log-ൽ reference ഉള്ളതിനാൽ; parameter names local ആയതിനാൽ single letters ആകുന്നു. Mangle ഓഫ് ചെയ്‌ത് readable parameter names നിലനിർത്താം.

FAQ

ഇത് ബ്രൗസറിൽ റൺ ആകുമോ?

അതെ. ആദ്യ Minify ക്ലിക്ക് അല്ലെങ്കിൽ Live mode ഓൺ ചെയ്‌ത് Terser lazy-load ആകും — ഏകദേശം 200 KB compressed ബ്രൗസർ cache-ൽ, പിന്നീട് download ഇല്ല. കോഡ് page വിടുന്നില്ല.

Name mangling എന്താണ്, safe ആണോ?

Mangling local variables single letters ആക്കുന്നു. Self-contained scripts, IIFE bundles-ന് safe ആണ്, rename scope വിടുന്നില്ല. Globals name ഉപയോഗിച്ച് expose ചെയ്യുന്ന scripts-ന് (ഉദാ. window.myLib = …) wrapper ഇല്ലെങ്കിൽ NOT safe. ഉറപ്പില്ലെങ്കിൽ Mangle ഓഫ് ചെയ്യുക.

Minification-ന് ശേഷം കോഡ് break ആയതെന്തുകൊണ്ട്?

മൂന്ന് സാധാരണ കാരണങ്ങൾ: string ഉപയോഗിച്ച് variables reference ചെയ്യുന്ന eval അല്ലെങ്കിൽ with; ഒറിജിനൽ identifier ആശ്രയിക്കുന്ന Function.name അല്ലെങ്കിൽ arguments.callee reads; rename ആയ name ഉപയോഗിച്ച് expose ചെയ്‌ത globals. ആദ്യം Mangle ഓഫ് ചെയ്‌ത് കാരണം isolate ചെയ്യുക.

Modern syntax (ES2020+) support ഉണ്ടോ?

ഉണ്ട്. ECMAScript target ES2020 അല്ലെങ്കിൽ Next ആക്കിയാൽ Terser optional chaining, nullish coalescing, top-level await, logical-assignment operators preserve ചെയ്യുന്നു. ES5 ആക്കിയാൽ Terser down-compile ചെയ്യും, പക്ഷേ ഇത് full transpiler അല്ല — ES5-ന് represent ചെയ്യാൻ കഴിയാത്ത syntax-ന് Babel ഉപയോഗിക്കുക.

Terser ഉപയോഗിച്ച് browser-side JavaScript minification build tool ഇല്ലാതെ production-quality ഔട്ട്‌പുട്ട് നൽകുന്നു. Script paste ചെയ്‌ത്, ECMAScript target തിരഞ്ഞെടുത്ത്, copy അല്ലെങ്കിൽ download ചെയ്‌തോളൂ. ഒന്നും upload ആകില്ല, account ആവശ്യമില്ല, build pipeline വേണ്ട. Minifier ആവശ്യപ്പെടുമ്പോൾ മാത്രം load ആകുന്നു.