DT Dev Tools

JavaScript Minifier — Мініфікатор JavaScript

Мініфікуйте JavaScript за допомогою Terser у браузері: стискайте код, скорочуйте імена, видаляйте виклики console і порівнюйте розмір до та після.

🔒 Працює повністю у вашому браузері — нічого не завантажується

Drop a .js file here or click to browse — or paste code below

Before: –After: –Saved: –
Advertisement

Як працює мініфікація JavaScript

Мініфікація зменшує розмір JavaScript, не змінюючи того, що робить код. Цей інструмент використовує Terser — зрілий мініфікатор, який розбирає ваш код в абстрактне синтаксичне дерево, перетворює його та знову виводить код без зайвих пробілів і коментарів. Етап compress застосовує десятки оптимізацій: видаляє недосяжний код і невикористані змінні, підставляє константи, об’єднує послідовні оголошення змінних, де можливо, перетворює інструкції if на коротші умовні вирази та заздалегідь обчислює прості константні вирази. Потім етап mangle перейменовує локальні змінні, параметри та імена функцій на одну-дві літери. Імена властивостей і глобальні змінні залишаються без змін, тож публічна поведінка вашого коду не змінюється.

Індикатори розміру показують розмір вхідних і вихідних даних у байтах UTF-8 та відсоток економії. Типовий код, написаний вручну, зменшується на 40–70%; код, який уже компактний або складається переважно з довгих рядків, зменшиться менше. Пам’ятайте, що сервери зазвичай додатково стискають JavaScript за допомогою gzip або Brotli, тому реальна економія під час передавання менша за «сире» значення, але мініфікований код усе одно швидше розбирається і споживає менше трафіку.

Як вибрати правильні параметри

Параметр ECMAScript target вказує Terser, який синтаксис можна використовувати у вихідному коді. З ES2020 він може генерувати стрілкові функції, optional chaining та інші сучасні конструкції; з ES5 він не додає новішого синтаксису, проте не транспілює сучасний код, який ви написали самі, — для цього скористайтеся інструментом на кшталт Babel або esbuild. Keep console.* зберігає логування, що зручно для staging-збірок. Увімкніть ES module для файлів, які використовують import/export; це також дає змогу скорочувати імена верхнього рівня, оскільки область видимості модуля приватна.

Конфіденційність за задумом

Мініфікатор завантажується лише за потреби й працює локально, тож ваш вихідний код ніколи нікуди не надсилається. Завдяки цьому він добре підходить для швидких разових завдань, як-от зменшення вбудованого скрипту, букмарклету чи фрагмента коду для стороннього менеджера тегів. Якщо Terser повідомляє про синтаксичну помилку, повідомлення містить номер рядка й стовпця, щоб ви могли виправити вхідні дані. Для продакшн-бандлів залишайте мініфікацію у своєму конвеєрі збирання, щоб результат був відтворюваним, і генеруйте source maps для налагодження.

Як користуватися

  1. Додайте кодВставте JavaScript у поле введення або перетягніть файл .js у зону завантаження.
  2. Виберіть параметриУвімкніть або вимкніть стиснення, скорочення імен, видалення console, режим модуля та цільову версію ECMAScript.
  3. МініфікуйтеНатисніть Minify JavaScript, щоб побачити результат із розміром до, після та відсотком економії.
  4. Скопіюйте або завантажтеСкопіюйте мініфікований код або завантажте його як файл .min.js.

Часті запитання

Який мініфікатор тут використовується?
Terser — стандартний мініфікатор JavaScript у webpack і додатковий варіант у Vite та Rollup. Він працює повністю у вашому браузері.
Чим відрізняються compress і mangle?
Compress переписує код у коротшу еквівалентну форму: видаляє мертвий код, обчислює константи й спрощує вирази. Mangle перейменовує локальні змінні та параметри функцій на короткі імена. Обидва режими безпечні для звичайного коду, і їх можна вмикати незалежно один від одного.
Чому зникли мої виклики console.log?
За замовчуванням компресор видаляє виклики console.*, що є звичною практикою для продакшн-бандлів. Позначте Keep console.*, щоб їх зберегти.
Коли слід вмикати ES module?
Увімкніть цей параметр, якщо ваш файл містить інструкції import або export. Режим модуля також дозволяє Terser скорочувати імена верхнього рівня — це безпечно для модулів, але може зламати класичні скрипти, які надають глобальні змінні.
Advertisement