Я пишу пакетный скрипт, чтобы украсить код JavaScript. Он должен работать как в Windows, так и в Linux .
Как я могу украсить код JavaScript с помощью инструментов командной строки?
Я пишу пакетный скрипт, чтобы украсить код JavaScript. Он должен работать как в Windows, так и в Linux .
Как я могу украсить код JavaScript с помощью инструментов командной строки?
Ответы:
Во-первых, выберите свой любимый Pretty Print / Beautifier на основе Javascript. Я предпочитаю тот, что находится вhttp://jsbeautifier.org/ , потому что это то, что я нашел первым. Скачивает свой файл https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js
Во-вторых, загрузите и установите Rhino, основанный на Java движок Javascript группы Mozilla . «Установить» немного вводит в заблуждение; Загрузите zip-файл, извлеките все, поместите js.jar в свой путь к классам Java (или Library / Java / Extensions в OS X). Затем вы можете запускать скрипты с вызовом, подобным этому
Используйте Pretty Print / Beautifier из шага 1, чтобы написать небольшой сценарий оболочки, который будет читать ваш файл javascript и запускать его через Pretty Print / Beautifier из шага один. Например
Rhino предоставляет javascript несколько дополнительных полезных функций, которые не обязательно имеют смысл в контексте браузера, но имеют смысл в контексте консоли. Функция print делает то, что вы ожидаете, и выводит строку. Функция readFile принимает строку пути к файлу в качестве аргумента и возвращает содержимое этого файла.
Вы бы вызывали приведенное выше что-то вроде
Вы можете смешивать и сопоставлять Java и Javascript в своих сценариях запуска Rhino, поэтому, если вы немного знаете Java, не должно быть слишком сложно запустить это с текстовыми потоками.
источник
ОБНОВЛЕНИЕ Апрель 2014 г . :
Beautifier был переписан с тех пор, как я ответил на это в 2010 году. Теперь там есть модуль python, пакет npm для nodejs, а файл jar исчез. Прочтите страницу проекта на github.com .
Стиль Python:
Стиль NPM:
использовать это:
Оригинальный ответ
Добавление к ответу @Alan Storm
украшение командной строки на основе http://jsbeautifier.org/ стало немного проще в использовании, потому что теперь (альтернативно) он основан на движке javascript V8 (код C ++) вместо rhino (движок JS на основе java, упакованный как "js.jar"). Таким образом, вы можете использовать V8 вместо rhino.
Как пользоваться:
загрузите zip-файл jsbeautifier.org с http://github.com/einars/js-beautify/zipball/master
(это URL-адрес загрузки, связанный с zip-файлом, например http://download.github.com/einars-js-beautify-10384df.zip )
старый (больше не работает, файл jar исчез)
новый (альтернатива)
установить / скомпилировать v8 lib ИЗ svn, см. v8 / README.txt в вышеупомянутом zip файле
-имеет немного другие параметры командной строки, чем версия rhino,
-и отлично работает в Eclipse, когда настроен как «Внешний инструмент»
источник
Если вы используете nodejs, попробуйте uglify-js
В Linux или Mac, если у вас уже установлен nodejs, вы можете установить uglify с помощью:
А потом получите варианты:
Итак, если у меня есть исходный файл,
foo.js
который выглядит так:Я могу украсить это так:
uglify
по умолчанию использует пробелы для отступа, поэтому, если я хочу преобразовать отступ с 4 пробелами в вкладки, я могу запустить его, вunexpand
котором поставляется Ubuntu 12.04:Или вы можете сделать все за один присест:
Вы можете узнать больше о неразвернутом здесь
так что после всего этого я получаю файл, который выглядит так:
обновление 2016-06-07
Похоже, что разработчик uglify-js сейчас работает над версией 2, хотя установка такая же.
источник
uglifyjs -b
делает гораздо больше, чем просто исправляет отступы, он меняет порядок и переписывает код, возможно, для повышения эффективности. Я не этого хотел. Я использовал старую версию в Ubuntu 14.04.uglifyjs -b
переставляет и переписывает код?В Ubuntu LTS
источник
js-beautify -o file.js file.js
В консоли вы можете использовать Artistic Style (он же AStyle) с
--mode=java
.Он отлично работает, бесплатный, с открытым исходным кодом и кроссплатформенный (Linux, Mac OS X, Windows).
источник
Используйте современный способ JavaScript:
Используйте Grunt в сочетании с плагином jsbeautifier для Grunt
Вы можете легко установить все в свою среду разработки с помощью npm .
Все, что вам нужно, это настроить Gruntfile.js с соответствующими задачами, которые также могут включать конкатенацию файлов, lint, uglify, minify и т. Д., А также запустить команду grunt.
источник
Я не могу добавить комментарий к принятому ответу, поэтому вы видите сообщение, которого вообще не должно было существовать.
По сути, мне также нужен был javascript beautifier в java-коде, и, к моему удивлению, ни один из них недоступен, насколько я мог найти. Поэтому я сам написал его полностью на основе принятого ответа (он является оболочкой для сценария jsbeautifier.org beautifier .js, но его можно вызвать из java или из командной строки).
Код находится по адресу https://github.com/belgampaul/JsBeautifier.
Я использовал rhino и beautifier.js
ИСПОЛЬЗОВАНИЕ с консоли: java -jar jsbeautifier.jar скрипт отступа
пример: java -jar jsbeautifier.jar "function ff () {return;}" 2
ИСПОЛЬЗОВАНИЕ из кода Java: общедоступная статическая строка jsBeautify (String jsCode, int indentSize)
Вы можете расширить код. В моем случае мне нужен был только отступ, чтобы я мог проверять сгенерированный javascript во время разработки.
Надеюсь, это сэкономит вам время в вашем проекте.
источник
Я написал статью, в которой объясняется, как создать улучшитель JavaScript для командной строки, реализованный на JavaScript, менее чем за 5 минут. YMMV.
источник
Я считаю, что когда вы спросили об инструменте командной строки, вы просто хотели украсить все свои js-файлы в пакетном режиме.
В этом случае это может сделать Intellij IDEA (протестировано с 11.5).
Вам просто нужно выбрать любой из файлов вашего проекта и выбрать «Код» -> «Переформатировать код ..» в главном меню IDE. Затем в диалоговом окне выберите «все файлы в каталоге ...» и нажмите «Enter». Просто убедитесь, что вы выделили достаточно памяти для JVM.
источник
У вас есть несколько вариантов одного лайнера. Используйте с npm или автономно с npx .
Семистандар
Стандарт
Красивее
источник