Как я могу украсить код JavaScript с помощью командной строки?
-
09-06-2019 - |
Вопрос
Я пишу пакетный скрипт, чтобы украсить код JavaScript.Это должно работать над обоими Windows и Linux.
Как я могу украсить код JavaScript с помощью инструментов командной строки?
Решение
Во-первых, выберите свой любимый Pretty Print / Beautifier на основе Javascript.Я предпочитаю тот, что в http://jsbeautifier.org/, потому что это то, что я нашел первым.Загружает свой файл https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js
Во-вторых, загрузите и установите Javascript-движок Mozilla Group на базе Java, Носорог."Установить" немного вводит в заблуждение;Загрузите zip-файл, извлеките все, поместите js.jar в свой Java classpath (или Library / Java /Extensions в OS X).Затем вы можете запускать скрипты с вызовом, подобным этому
java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js
Используйте Pretty Print / Beautifier из шага 1, чтобы написать небольшой скрипт оболочки, который будет считывать ваш файл javascript и запускать его через Pretty Print / Beautifier из шага один.Например
//original code
(function() { ... js_beautify code ... }());
//new code
print(global.js_beautify(readFile(arguments[0])));
Rhino предоставляет javascript несколько дополнительных полезных функций, которые не обязательно имеют смысл в контексте браузера, но имеют смысл в контексте консоли.Функция print делает то, что вы ожидаете, и выводит строку.Функция ReadFile принимает строку пути к файлу в качестве аргумента и возвращает содержимое этого файла.
Вы бы использовали приведенное выше что-то вроде
java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js
Вы можете смешивать и сочетать Java и Javascript в своих скриптах запуска Rhino, так что, если вы немного знаете Java, вам не составит большого труда запустить это и с текстовыми потоками.
Другие советы
Если вы используете nodejs, попробуйте уродовать-js
В Ubuntu 12.04, предполагая, что у вас уже установлен nodejs, вы можете установить uglify с помощью:
sudo npm install -g uglify-js
А затем получите варианты:
uglifyjs -h
Итак, если у меня есть исходный файл foo.js
который выглядит примерно так:
// foo.js -- minified
function foo(bar,baz){console.log("something something");return true;}
Я могу украсить его вот так:
uglifyjs foo.js --beautify --output cutefoo.js
uglify
по умолчанию использует пробелы для отступов, поэтому, если я хочу преобразовать отступ с 4 пробелами в табуляцию, я могу запустить его через unexpand
с чем поставляется Ubuntu 12.04:
unexpand --tabs=4 cutefoo.js > cuterfoo.js
Или вы можете сделать все это за один раз:
uglifyjs foo.js --beautify | unexpand --tabs=4 > cutestfoo.js
Вы можете узнать больше о expand здесь
итак, после всего этого я получаю файл, который выглядит следующим образом:
function foo(bar, baz) {
console.log("something something");
return true;
}
обновление 2016-06-07
Похоже, что сопровождающий uglify-js сейчас работает над версия 2 хотя установка та же самая.
ОБНОВЛЕНИЕ За апрель 2014 года:
The beautifier был переписан с тех пор, как я ответил на этот вопрос в 2010 году.Теперь там есть модуль python, пакет npm для nodejs, а jar-файл исчез.Пожалуйста, прочтите страница проекта на github.com.
Стиль Python:
$ pip install jsbeautifier
Стиль НПМ:
$ npm -g install js-beautify
чтобы использовать его:
$ js-beautify file.js
Оригинальный ответ
Добавление к ответу @Alan Storm
средство для улучшения командной строки, основанное на http://jsbeautifier.org/ стало немного проще в использовании, потому что теперь (альтернативно) он основан на движке javascript версии 8 (код c ++) вместо rhino (движок JS на основе Java, упакованный как "js.jar").Таким образом, вы можете использовать V8 вместо rhino.
Как использовать:
загрузить jsbeautifier.org zip-файл с http://github.com/einars/js-beautify/zipball/master
(это URL-адрес загрузки, связанный с zip-файлом, таким как http://download.github.com/einars-js-beautify-10384df.zip)
старый (больше не работает, файл jar удален)
java -jar js.jar name-of-script.js
новый (альтернативный)
установите / скомпилируйте библиотеку версии 8 ИЗ svn, смотрите v8/README.txt в вышеупомянутом zip-файле
./jsbeautify somefile.js
-имеет немного другие параметры командной строки, чем версия rhino,
-и отлично работает в Eclipse, когда настроен как "Внешний инструмент".
В Ubuntu 18.04 LTS
$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js
В консоли вы можете использовать Художественный стиль (он же.AStyle) с --mode=java
.
Он отлично работает, является бесплатным, с открытым исходным кодом и кроссплатформенным (Linux, Mac OS X, Windows).
Я не могу добавить комментарий к принятому ответу, поэтому вы видите сообщение, которого вообще не должно было существовать.
В принципе, мне также нужен был javascript beautifier в java-коде, и, к моему удивлению, насколько я смог найти, ни один из них не доступен.Поэтому я сам закодировал его, полностью основываясь на принятом ответе (он оборачивает скрипт jsbeautifier.org beautifier .js, но вызывается из java или командной строки).
Код находится по адресу https://github.com/belgampaul/JsBeautifier
Я использовал rhino и beautifier.js
ИСПОЛЬЗОВАНИЕ с консоли:java -jar jsbeautifier.jar отступ в скрипте
пример:java -jar jsbeautifier.jar "функция ff() {return;}" 2
ИСПОЛЬЗОВАНИЕ из кода Java:общедоступная статическая строка jsBeautify(String jsCode, int indentSize)
Вы можете расширить этот код.В моем случае мне нужен был отступ только для того, чтобы я мог проверить сгенерированный javascript во время разработки.
В надежде, что это сэкономит вам немного времени в вашем проекте.
Я написал статью, объясняющую, как построить JavaScript beautifier командной строки, реализованный на JavaScript менее чем через 5 минут.ИММВ.
- Загрузите последнюю стабильную версию Rhino и распакуйте ее где-нибудь, например~/dev/javascript/rhino
- Загрузить beautify.js на который есть ссылка из вышеупомянутого jsbeautifier.org затем скопируйте его куда-нибудь, например~/dev/javascript/bin/cli-beautifier.js
Добавьте это в конце beautify.js (используя некоторые дополнительные свойства верхнего уровня в JavaScript):
// Run the beautifier on the file passed as the first argument. print( j23s_beautify( readFile( arguments[0] )));
Скопируйте-вставьте следующий код в исполняемый файл, например~/dev/javascript/bin/jsbeautifier.sh:
#!/bin/sh java -cp ~/dev/javascript/rhino/js.jar org.mozilla.javascript.tools.shell.Main ~/dev/web/javascript/bin/cli-beautifier.js $*
(необязательно) Добавьте папку с помощью jsbeautifier.js в PATH или переместите в какую-нибудь уже существующую папку.
Я полагаю, что когда вы спросили об инструменте командной строки, вы просто хотели украсить все ваши js-файлы в пакетном режиме.
В этом случае Intellij IDEA (протестирована с 11.5) может это сделать.
Вам просто нужно выбрать любой из файлов вашего проекта и выбрать "Код" -> "Переформатировать код .." в главном меню IDE.Затем в открывшемся диалоговом окне выберите "все файлы в каталоге..." и нажмите "enter".Просто убедитесь, что вы выделили достаточно памяти для JVM.
Используйте современный способ JavaScript:
Использование Ворчание в сочетании с плагин jsbeautifier для Grunt
Вы можете легко установить все в свою среду разработки, используя нпм.
Все, что вам понадобится, это настроить a Gruntfile.js с соответствующими задачами, которые также могут включать конкатенацию файлов, lint, uglify, minify и т.д., и запустить команду grunt.