JavaScript-мініфікатор

Вставте JavaScript, щоб стиснути його за допомогою Terser: мертвий код видаляється, імена скорочуються, пробіли зникають. Синтаксичні помилки вказують точний рядок і стовпець.

Працює в браузеріБез реєстраціїНічого не завантажується

Мініфікований результат

Як користуватися: JavaScript-мініфікатор

  1. Вставте JavaScript або відкрийте файл .js.
  2. Виберіть опції: Скорочувати імена вкорочує локальні змінні, Стискати переписує код у менший еквівалент, ES-модуль вмикає import/export верхнього рівня.
  3. Виберіть цільову версію ECMAScript, яку підтримують браузери ваших користувачів. ES2020 безпечна для всіх evergreen-браузерів.
  4. Перевірте розмір, економію й оцінку gzip під результатом.
  5. Скопіюйте мініфікований код або завантажте його як output.min.js.

Що робить мініфікатор JavaScript?

Мініфікація зменшує JavaScript, не змінюючи його поведінки. Інструмент використовує Terser — мініфікатор, що стоїть за webpack, Vite і Rollup, — і застосовує три види змін:

  • Видалення пробілів і коментарів: відступи, переведення рядків і коментарі рушію JavaScript не потрібні.
  • Скорочення імен (mangling): імена локальних змінних і параметрів функцій на кшталт subtotal перетворюються на одиночні літери. Глобальні імена й властивості об'єктів не чіпаються, тому ваш публічний API продовжує працювати.
  • Стиснення: константні вирази обчислюються заздалегідь, недосяжний код видаляється, оператори if перетворюються на тернарні, а короткі функції вбудовуються.

Мініфікація чи gzip: чи потрібне і те, й інше?

Так. Gzip і Brotli стискають повторювані послідовності байтів під час передавання, а мініфікація прибирає байти, які браузеру інакше довелося б завантажити, розібрати й скомпілювати. Типовий скрипт зменшується на 40–60% від мініфікації й ще на 60–70% від gzip. Показаний тут розмір gzip — добра оцінка того, що насправді надішле ваш сервер.

Збереження ліцензійних коментарів

Багато open-source ліцензій (MIT, BSD, Apache) вимагають, щоб повідомлення про авторські права залишалося з кодом. За домовленістю коментарі, що починаються з /*! або містять @license чи @preserve, зберігаються, коли ввімкнено Зберігати ліцензійні коментарі.

Коли не варто мініфікувати вручну

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

Поширені запитання

Чи завантажується мій код на сервер?
Ні. Terser працює у вкладці вашого браузера, тому пропрієтарний код не залишає ваш комп'ютер.
Чи може мініфікація зламати мій код?
Terser застосовує лише перетворення, що зберігають поведінку коректного JavaScript. Код, який покладається на Function.prototype.toString() або на імена локальних змінних через eval, може постраждати; у такому разі вимкніть Скорочувати імена.
Чи підтримується сучасний синтаксис: async/await, класи й optional chaining?
Так. Terser розбирає синтаксис ES2022+. Налаштування цілі визначає лише, який синтаксис може використовувати результат; воно не транспілює нові можливості в старі.
Чим minify відрізняється від uglify?
Це те саме. UglifyJS був класичним інструментом; Terser — його підтримуваний форк із повною підтримкою ES2015+.

Схожі інструменти