Кіріспе

Кодтағы қажетсіз таңбаларды функционалдығын өзгертпей жою.

Минификация (сондай-ақ минимализация немесе қысқарту) – интерпретацияланатын бағдарламалау тілдерінің немесе таңбалау тілдерінің бастапқы кодынан барлық қажетсіз таңбаларды, оның функционалдығын өзгертпей, алып тастау процесі. Бұл қажетсіз таңбаларға әдетте бос орын таңбалары, жаңа жол таңбалары, түсініктемелер және кейде блок шешімдері жатады, олар кодты оқуға ыңғайлы ету үшін қолданылады, бірақ оның жұмыс істеуі үшін қажет емес. Минификация бастапқы кодтың көлемін азайтады, оны желі арқылы (мысалы, Интернет) тиімдірек таратуға мүмкіндік береді. Бағдарламалау мәдениетінде, ең қысқартылған бастапқы кодқа жету – ойын-сауық ретіндегі код гольф жарыстарының мақсаты болып табылады. Минификацияны деректерді сығудан ажыратуға болады, себебі минификацияланған кодты декомпрессия қадамына қатыстырудың қажеті жоқ, оны дереу интерпретациялауға болады: бір интерпретатор бастапқы кодпен де, минификацияланған кодпен де жұмыс істей алады. Минификацияның мақсаттары көмескілендірудің мақсаттарынан өзгеше; алғашқысы әдемі басып шығару құралы немесе минификацияны кері қайтару құралын пайдалану арқылы кері қайтарылуы мүмкін. Дегенмен, мақсатына жету үшін минификация кейде көмескілендіруде де қолданылатын әдістерді қолданады; мысалы, айнымалы атауларын қысқарту және бастапқы кодты қайта құру. Минификация мұндай әдістерді қолданғанда, әдемі басып шығару құралы немесе минификацияны кері қайтару құралы, егер олар осындай әдістермен жасалған өзгерістер туралы толық мәліметтермен қамтамасыз етілсе ғана, минификация процесін толыққанды кері қайтара алады. Егер бұл мәліметтер берілмесе, кері қайтарылған бастапқы кодта әртүрлі айнымалы атаулары мен басқару ағыны болады, бірақ ол бастапқы кодтың функционалдығымен бірдей болады.

Тарих

2001 жылы Дуглас Крокфорд JSMin-ді ұсынды, ол JavaScript кодынан түсініктемелер мен бос орындарды жойды. 2007 жылы оған YUI Compressor екіінші болып келді. 2010 жылы Михай Базон UglifyJS-ті ұсынды, ол 2012 жылы UglifyJS2-мен алмастырылды; қайта жазудың мақсаты бастапқы карталарды қолдауды қамтамасыз ету болды. 2017 жылдан бастап Алекс Лам UglifyJS2 бағдарламасын күтіп-ұстау және дамыту жұмыстарын өз мойнына алды, оны CLI мен API-ді біріктірген UglifyJS3 бағдарламасымен алмастырды. 2018 жылы Terser uglify es-тен бөлініп шықты және одан бері үдемелі дамуды көрсетіп келеді; 2020 жылы күндізгі жүктелімдер саны бойынша UglifyJS-ті басып озды.

Ресурсты сәйкестендіру

Source Map – JavaScript құралдарына компьютерде іске қосылған кодтан өзге кодты пайдаланушыға көрсетуге мүмкіндік беретін файл форматы. Мысалы, миниатюрленген кодты түзетуді жеңілдету үшін, осы кодты бастапқы миниатюрленбеген кодқа «байлап» көрсету арқылы. Бастапқы форматты Жозеф Шорр Closure Inspector миниатюрлендіру жобасы аясында жасаған. Форматтың 2- және 3-нұсқалары карта файлдарының өлшемін едәуір қысқартты.

Веб-құрылыс

Веб-қосымшалар мен веб-сайттар үшін жасалған компоненттер мен кітапханалар түрлі файлдардың мөлшерін азайту арқылы файлдарды сұрауды оңтайландырып, беттің жүктелу уақытын қысқартуға мүмкіндік береді. JavaScript және каскадты стильдер жинағы (CSS) ресурстары өздерінің жұмысын сақтай отырып, файл мөлшерін едәуір қысқарту арқылы кішітілді етуге болады. Онлайнда қолжетімді кітапханалар түрлі деңгейде кішітілді етуге және оңтайландыруға қабілетті. Кейбір кітапханалар клиент жүктеуі үшін бірнеше скрипт файлдарын бір файлға біріктіреді. JavaScript бастапқы карталары кодты біріктірілген және кішітілді болғаннан кейін де оқуға және түзетуге қолайлы етеді.