આ ટૂલ વિશે
JavaScript મિનિફિકેશન બિનજરૂરી અક્ષરોને દૂર કરીને અને (યોગ્ય મિનિફાયર સાથે) સ્થાનિક ચલોનું નામ બદલીને ટૂંકા નામો દ્વારા સ્રોત કોડનું કદ ઘટાડે છે. પ્રથમ શ્રેણી - વ્હાઇટસ્પેસ અને ટિપ્પણી દૂર કરવી - સીધી અને જોખમ મુક્ત છે. બીજું — વેરિયેબલ રિનેમિંગ — માટે અવકાશના નિયમોને સમજવાની જરૂર છે અને તે છે જે Terser અને esbuild જેવા ઉત્પાદન મિનિફાયર શ્રેષ્ઠ કરે છે.
આ ટૂલ સુરક્ષિત મિનિફિકેશન પર ધ્યાન કેન્દ્રિત કરે છે: ટિપ્પણીઓ છીનવી લેવી, વ્હાઇટસ્પેસને સંકુચિત કરવી, બિનજરૂરી અર્ધવિરામને દૂર કરવી અને સ્પષ્ટ પેટર્નને ટૂંકી કરવી. વેરિયેબલ રિનેમિંગ રૂઢિચુસ્ત છે — સ્પષ્ટ અવકાશમાં માત્ર સ્થાનિક ચલોને સ્પર્શવામાં આવે છે, અને બાહ્ય-સંદર્ભિત નામો એકલા છોડી દેવામાં આવે છે. પરિણામ વિધેયાત્મક રીતે સ્ત્રોત જેવું જ છે.
ઉત્પાદન-ગ્રેડ મિનિફિકેશન માટે, સમર્પિત સાધનો (Terser, esbuild, swc) સંપૂર્ણ ECMAScript સ્કોપ મોડેલને સમજે છે અને નોંધપાત્ર રીતે નાનું આઉટપુટ ઉત્પન્ન કરે છે. જ્યારે સંપૂર્ણ બિલ્ડ સેટઅપ ઉપલબ્ધ ન હોય ત્યારે આ સાધન ઝડપી બ્રાઉઝર-સાઇડ મિનિફિકેશન માટે છે.
શા માટે JavaScript Minify
જાવાસ્ક્રિપ્ટ બંડલ્સ એ આધુનિક વેબપેજ પર સામાન્ય રીતે સૌથી મોટું સિંગલ રિસોર્સ છે. મિનિફિકેશન નિયમિતપણે અનમિનિફાઇડ સ્ત્રોતની વિરુદ્ધ 30-60% કદમાં ઘટાડો કરે છે. gzip અથવા Brotli સાથે સંયોજિત, ઘટાડો કંઈક અંશે સંકોચાય છે, પરંતુ સંયોજન હજુ પણ માપી શકાય તેવા બાઈટ બચાવે છે — ખાસ કરીને ધીમા કનેક્શન પરના વપરાશકર્તાઓ માટે.
ઝડપી JavaScript નો અર્થ પણ ઝડપી સમય ટુ ઇન્ટરેક્ટિવ છે. નાની સ્ક્રિપ્ટો ઝડપથી ડાઉનલોડ થાય છે, ઝડપથી પાર્સ થાય છે અને વહેલા એક્ઝિક્યુટ થાય છે. સાઇટ્સ માટે જ્યાં TTI બાઉન્સ રેટ અને SEO રેન્કિંગને અસર કરે છે, મિનિફિકેશન એ ઉપલબ્ધ સૌથી સસ્તી જીત છે.
ટેકનિકલ વિગતો
ECMAScript સિન્ટેક્સને માન આપતા પાર્સરનો ઉપયોગ કરીને મિનિફાયર JavaScript ને ટોકનાઇઝ કરે છે. ટિપ્પણીઓ (સિંગલ-લાઇન અને મલ્ટિ-લાઇન) /* સાથે ચિહ્નિત થયેલ લાઇસન્સ ટિપ્પણીઓ સિવાય દૂર કરવામાં આવે છે! ઉપસર્ગ વ્હાઇટસ્પેસ સંકુચિત થાય છે સિવાય કે જ્યાં સિન્ટેક્ટિકલી જરૂરી હોય (ઓઇડેન્ટીફાયર વચ્ચે, કીવર્ડ્સ પછી).
રૂઢિચુસ્ત ચલનું નામ બદલવાથી સ્થાનિક ચલોને સરળ અવકાશમાં ટૂંકાવી શકાય છે. વૈશ્વિક, નિકાસ અને આયાત કરેલા નામો બદલવામાં આવ્યાં નથી - જે બાહ્ય સંદર્ભોને તોડી નાખશે. ઊંડા નામ બદલવા માટે, યોગ્ય મોડ્યુલ-અવેર વિશ્લેષણ સાથે Terser અથવા esbuild નો ઉપયોગ કરો.
એજ કેસ: ઓટોમેટિક સેમીકોલોન ઇન્સર્શન (ASI) એટલે કે મિનિફાયર એ પ્રોગ્રામ વર્તણૂકને બદલવાનું ટાળવા માટે કેટલાક સંદર્ભોમાં નવી લાઇન સાચવવી આવશ્યક છે. ટેમ્પલેટ લિટરલ્સ, રેગેક્સ લિટરલ્સ, અને JSX (જો ઇનપુટમાં તે શામેલ હોય તો) બરાબર સાચવવામાં આવે છે કારણ કે તેમની સામગ્રી સંકુચિત કરવા માટે સલામત ન હોઈ શકે.
વારંવાર પૂછાતા પ્રશ્નો
- શું મિનિફિકેશન મારો કોડ કેવી રીતે કામ કરે છે તેમાં ફેરફાર કરે છે?
- ના. મિનિફિકેશન વ્હાઇટસ્પેસ અને ટિપ્પણીઓને દૂર કરે છે, જે અમલીકરણને અસર કરતું નથી. વેરિયેબલ શોર્ટનિંગ (મેંગલિંગ) સ્થાનિક ચલોનું નામ બદલી નાખે છે પરંતુ વર્તન સાચવે છે. વૈશ્વિક ચલો અને નિકાસ કરેલા નામો અકબંધ રાખવામાં આવ્યા છે.
- શું મારે વિકાસ અથવા ઉત્પાદનમાં નાનું કરવું જોઈએ?
- ઉત્પાદનમાં માત્ર મિનિફાઇડ કોડનો ઉપયોગ કરો. વિકાસ દરમિયાન, મૂળ વાંચી શકાય તેવા કોડ રાખો. મોટાભાગના બિલ્ડ ટૂલ્સ (વેબપેક, વિટ, એસબિલ્ડ) પ્રોડક્શન બિલ્ડ પ્રક્રિયાના ભાગ રૂપે મિનિફિકેશનને આપમેળે હેન્ડલ કરે છે.
- મિનિફિકેશન અને અસ્પષ્ટતા વચ્ચે શું તફાવત છે?
- જો ફોર્મેટ કરેલ હોય તો કોડને વિધેયાત્મક રીતે વાંચી શકાય તેવી રાખવા સાથે મિનિફિકેશન કદ ઘટાડે છે. અસ્પષ્ટતા ઈરાદાપૂર્વક કોડને સમજવામાં મુશ્કેલ બનાવે છે (સ્ટ્રિંગ એન્કોડિંગ, નિયંત્રણ ફ્લો ફ્લેટનિંગ). આ સાધન કદ ઘટાડવા પર ધ્યાન કેન્દ્રિત કરે છે, અસ્પષ્ટતા પર નહીં.
- મારે કેટલા કદ ઘટાડાની અપેક્ષા રાખવી જોઈએ?
- સામાન્ય રીતે gzip પહેલાં 30-60%. લાંબા ચલ નામો સાથે સારી રીતે ટિપ્પણી કરેલ કોડ સૌથી મોટો ઘટાડો જુએ છે. gzip કમ્પ્રેશન સાથે જોડાઈને, JavaScript ફાઈલો ઘણીવાર મૂળ સ્ત્રોત કરતા 80-90% નાની હોય છે.
- શું મારો કોડ સર્વર પર અપલોડ થયો છે?
- ના. મિનિફાયર તમારા બ્રાઉઝરમાં ચાલે છે.
- મારી JavaScript કેટલી નાની હશે?
- સામાન્ય રીતે 30-60% ઘટાડો. લાંબા ઓળખકર્તાઓ સાથે વેરીએબલ-હેવી કોડ વધુ સંકુચિત કરે છે; અભિવ્યક્તિ-ભારે કોડ ઓછા સંકુચિત કરે છે.
- શું મારે હાથથી નાનું કરવું જોઈએ?
- ક્યારેય નહીં. સ્ત્રોતમાં વાંચી શકાય તેવી JavaScript જાળવો. બિલ્ડ સ્ટેપ તરીકે અથવા ડિપ્લોયમેન્ટના ભાગ રૂપે મિનિફિકેશન ચલાવો.
- શું તે TypeScript પર કામ કરે છે?
- Tsc અથવા esbuild નો ઉપયોગ કરીને TypeScript ને પહેલા JavaScript માં કમ્પાઈલ કરવાની જરૂર છે. એકવાર કમ્પાઈલ થઈ ગયા પછી, પરિણામી JavaScript નાની કરી શકાય છે.