Инструмент для 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 - отличный сервис.
Дэн Лью

Спасибо. Это именно то, что я искал.
Энди Форд


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


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

10

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

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

2
Пиво подают прямо сейчас :)
dgilperez

6

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


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);}}




5

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

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

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

4

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





Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.