Инструмент для Unminify / Decompress JavaScript [закрыт]

430

Существуют ли какие-либо сценарии командной строки и / или онлайн-инструменты, которые могут обратить вспять эффект минимизации, аналогичный тому, как Tidy может убрать ужасающий HTML?

(Я специально пытаюсь уничтожить минимизированный файл JavaScript, поэтому переименование переменных все еще может быть проблемой.)

Энди Форд
источник
4
Для тех из вас, кто не знает, минификация меняет имена внутренних переменных на одну букву и удаляет комментарии кода. Отмена этих изменений не может быть автоматизирована.
Река Вивиан
@DanielAllenLangdon Хороший вопрос. Я отредактировал вопрос, чтобы он больше не подразумевал, что минификация не меняет имена переменных.
Энди Форд
12
FWIW ... только что нашел JS NICE jsnice.org
Энди Форд
marcusjenkins.com/linux/… работал хорошо для меня.
ychaouche
1
Для @DanielAllenLangdon: jsnice.org может минимизировать и де-запутать даже код 30k angularjs.
Зеленый,

Ответы:

504

Вы можете использовать это: http://jsbeautifier.org/ Но это зависит от используемого вами метода minify, он только форматирует код, не меняет имена переменных и не распаковывает кодировку base62.

редактировать: фактически он может распаковывать «упакованные» скрипты (упакованные пакером Дина Эдварда: http://dean.edwards.name/packer/ )

Фабьен Менагер
источник
2
+1 - я использовал этот метод раньше, и jsbeautifier.org - отличный сервис.
Дэн Лью
Спасибо. Это именно то, что я искал.
Энди Форд
5
Нет, я сказал, база 62: dean.edwards.name/packer и en.wikipedia.org/wiki/Base_62
Фабьен Менагер,
4
Есть ли такая вещь, как инструмент, который «меняет имена переменных» и до сих пор знает синтаксис JS, чтобы не нарушать код?
Хорхе Варгас
3
бы это 10 раз, если бы я мог. только что спас меня от потерянного дня!
Бенлумли
154

Инструменты разработчика Chrome имеют эту встроенную функцию. Откройте инструменты разработчика (нажатие клавиши F12 является односторонним), на вкладке «Источники» в нижней левой панели есть набор значков. Значок "{}" - "Pretty print" - выполняет преобразование по требованию.

ОБНОВЛЕНИЕ: IE9 «Инструменты разработчика F12» также имеет функцию «Формат JavaScript» на вкладке «Сценарий» под значком «Инструменты». ( см. совет № 4 в F12 Лучший секрет веб-отладки )

введите описание изображения здесь

Джон Адамс
источник
1
Для конкретного .js, который я пытался унифицировать, этот метод работал лучше всего, ура.
незнакомец
1
Теперь это вкладка «Источники», а не вкладка «Сценарии».
mhenry1384
@ mhenry1384: Да, Chrome переименовал вкладку. Я обновил ответ соответственно.
Джон Адамс
ДА!! (наше приложение не имеет режима отладки / разработки для js, о котором я знаю - мы, к счастью, не сокращаем / не преобразуем имена переменных.)
Стивен Лу
2
Просто наперед: Chrome иногда портит код JavaScript. Например, if (a) /regex/.match(foo);довольно напечатан, поскольку if (a)\n / /regex/ .\nmatch(foo);это синтаксическая ошибка.
амфетамина
56

Понял! JSBeautifier делает именно это, и у вас даже есть опции для автоматического форматирования.

Вспышка
источник
5
stackoverflow-then-google вместо google-then-stackoverflow? :))))
dfa
Я сделал Google для "Javascript
Formatter
1
Этот плагин FireFox использует JSBeautifier для удаления мини-кода javascript, поэтому вы можете установить точки останова на строках в js-отладчике FireBug !!: addons.mozilla.org/en-US/firefox/addon/javascript-deminifier
BT
16

Разве вы не можете просто использовать формататор javascript ( http://javascript.about.com/library/blformat.htm )?

Янко
источник
+1 за ответ, который тоже работает. Фабьен только что ответил первым
Энди Форд
Это только ответ на «распаковку» части вопроса.
Хорхе Варгас
Нет, это не работает хорошо. Это нарушает код ... :(
Рамеш
14

В Firefox, SpiderMonkey и Rhino вы можете заключить любой код в анонимную функцию и вызвать ее toSourceметод, который даст вам красиво отформатированный источник функции.

toSource также снимает комментарии.

Например :

(function () { /* Say hello. */ var x = 'Hello!'; print(x); }).toSource()

Будет преобразован в строку:

function () {
    var x = "Hello!";
    print(x);
}

PS : Это не «онлайн-инструмент», но все вопросы об общих методах украшения закрыты как дубликаты этого.

katspaugh
источник
Интересно. Я задал этот вопрос 2,5 года назад, поэтому чувствую, что уже слишком поздно редактировать заголовок, но мне все еще нравится видеть как онлайн, так и офлайн варианты. Спасибо за участие. +1
Энди Форд
10

Если у вас есть Mac и TextMate - простая альтернатива для форматирования Javascript:

  1. Откройте файл с помощью Textmate.
  2. Нажмите> Связки> JavaScript> Переформатировать документ
  3. Взломать пиво.
Камень
источник
2
Пиво подают прямо сейчас :)
dgilperez
6

Большинство IDE также предлагают функции автоформатирования. Например в NetBeans, просто нажмите CTRL + K .

gou1
источник
5

В качестве альтернативы (поскольку я до сих пор не знал о jsbeautifier.org), я использовал букмарклет, который снова включил кнопку декодирования в пакере Дина Эдварда.

Я нашел инструкции и букмарклет здесь .

вот букмарклет (если сайт не работает)

javascript:for%20(i=0;i<document.forms.length;++i)%20{for(j=0;j<document.forms[i].elements.length;++j){document.forms[i].elements[j].removeAttribute(%22readonly%22);document.forms[i].elements[j].removeAttribute(%22disabled%22);}}
Mottie
источник
5

Похож на камень ответу , но для разработчиков Windows / .NET:

Если у вас есть Visual Studio и ReSharper - простая альтернатива для форматирования Javascript:

  • Откройте файл с помощью Visual Studio;
  • Нажмите ReSharper> Инструменты> Код очистки (Ctrl + E, C);
  • Выберите «По умолчанию: переформатировать код» и нажмите «ОК»;
  • Взломать пиво.
К. Аугусто Проиете
источник
4

Несмотря на свой симпатичный интерфейс, JSPretty - хороший, бесплатный и онлайн-инструмент для создания удобных для чтения исходных кодов JavaScript. Вы можете применить предпочитаемый тип отступа, и он также может обнаружить запутывание.

Farshid
источник
3

Довольно Diff украсит (довольно печати) JavaScript в путикоторый соответствует JSLint и JSHint белого пространства алгоритмов.

austincheney
источник
Ирония в том, что сайт такой красивый, но это крутой инструмент.
Энди Форд
3

Я был не очень доволен выводом jsbeautifier.org того, что я вставил, поэтому я провел еще несколько поисков и нашел этот сайт: http://www.centralinternet.com.br/javascript-beautifier

Работал очень хорошо для меня.

Дойл Льюис
источник