Який найкращий доступний компресор JavaScript? Я шукаю інструмент, який:
- проста у використанні
- має високу швидкість стиснення
- Отримайте надійні кінцеві результати (не зіпсуйте код)
Який найкращий доступний компресор JavaScript? Я шукаю інструмент, який:
Відповіді:
Нещодавно я випустив UglifyJS , компресор JavaScript, написаний на JavaScript (працює на платформі NodeJS Node.js , але його можна легко змінити для роботи в будь-якому двигуні JavaScript, оскільки він не потребує Node.js
внутрішніх даних). Це набагато швидше, ніж як YUI Compressor, так і Google Closure , він стискає краще, ніж YUI на всіх сценаріях, на яких я перевіряв, і безпечніший, ніж Closure (знає, що мати справу з "eval" або "with").
Крім видалення пробілів, UglifyJS також виконує наступні дії:
foo["bar"]
в foo.bar
де це можливоPS: О, це також може "прикрасити". ;-)
Перегляд цього питання через кілька років UglifyJS , здається, є найкращим варіантом на даний момент.
Як зазначено нижче, він працює на платформі NodeJS, але його можна легко модифікувати для роботи в будь-якому двигуні JavaScript.
--- Стара відповідь нижче ---
Google випустив компілятор закриття, який, здається, генерує найменші файли на сьогоднішній день, як це можна побачити тут і тут
До цього різні варіанти були наступними
В основному Packer виконує кращу роботу при початковому стисненні, але якщо ви збираєтеся збирати файли перед тим, як надсилати по дроту (що вам слід робити) YUI Compressor отримує найменший кінцевий розмір.
Тести проводились на jQuery код btw.
@ Даніель Джеймс згадує в коментарі компресора, який показує, що Пакер лідирує в діаграмі з найкращим стисненням, тому я думаю, ymmv
\uxxxx
литералов за замовчуванням .. використовувати , наприклад , --charset UTF-8
(якщо ви впевнені , що ви дозволяєте ноу - браузер про це як - то)
Компресор YUI - це шлях. Він має високу швидкість стиснення, добре перевірений і використовується у багатьох топ-сайтах, і, особисто, мені його рекомендують.
Я використовував його для своїх проектів без жодної помилки JavaScript або ікони. І це приємна документація.
Я ніколи не використовував його можливості стиснення CSS, але вони також існують. Стиснення CSS працює так само добре.
Примітка. Хоча Дік Едвардс / пакувальник / досягає кращого рівня стиснення, ніж YUI Compressor, я зіткнувся з декількома помилками JavaScript при його використанні.
npm install packer
. (= D
Я використовую ShrinkSafe з проекту Dojo - він винятковий, оскільки він фактично використовує інтерпретатор JavaScript ( Rhino ) для пошуку знаків у коді та розуміння їх сфери застосування тощо, що допомагає гарантувати, що код буде працювати, коли він з'явиться інший кінець, на відміну від багатьох інструментів стиснення, які використовують регекс для того ж (що не настільки надійно).
У мене фактично є завдання MSBuild в проекті веб-розгортання в моєму теперішньому рішенні Visual Studio, яке запускає сценарій, який, в свою чергу, запускає всі JS-файли рішення через ShrinkSafe, перш ніж ми розгорнемо, і це працює досить добре.
EDIT: До речі, "кращий" є відкритим для дебатів, оскільки критерії "найкращого" будуть змінюватися залежно від потреб проекту. Особисто я вважаю, що ShrinkSafe - це хороший баланс; для деяких людей, які вважають найменший розмір == найкращим, він буде недостатнім.
EDIT: Варто зазначити, що компресор YUI також використовує Rhino.
Якщо ви використовуєте Packer, просто перейдіть далеко до опції "зменшення змінних" і gzip отриманий код. Параметр base62 призначений лише для того, якщо ваш сервер не може надсилати gzipped файли. Пакувальник з "стисненням вар" досягає кращого стиснення YUI, але може вводити помилки, якщо ви десь пропустили крапку з комою.
base62 - це в основному gzip для бідних людей, саме тому gzipping code base62-ed дає вам більші файли, ніж gzipping shrink-var-ed-код.
У пошуках срібної кулі знайшли це питання. Для Ruby on Rails http://github.com/sstephenson/sprockets
Ось вихідний код HttpHandler, який робить це, можливо, він вам допоможе
bananascript.com використовував для отримання найкращих результатів.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress - це набір двох додатків (kjscompress a csscompress) для видалення несуттєвих пробілів та коментарів із файлів, що містять JavaScript та CSS. Обидва програми є командним рядком для операційної системи GNU / Linux.