Как я могу украсить код JavaScript с помощью командной строки? - PullRequest
90 голосов
/ 21 августа 2008

Я пишу пакетный скрипт для того, чтобы украсить код JavaScript. Он должен работать на Windows и Linux .

Как я могу украсить код JavaScript с помощью инструментов командной строки?

Ответы [ 9 ]

60 голосов
/ 26 августа 2008

Во-первых, выберите свой любимый Javascript на основе Pretty Print / Beautifier. Я предпочитаю один на http://jsbeautifier.org/,, потому что это то, что я нашел первым. Скачивает свой файл https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

Во-вторых, загрузите и установите движок Javascript группы Mozilla для Java, Rhino . «Установить» немного вводит в заблуждение; Загрузите zip-файл, распакуйте все, поместите js.jar в ваш путь к классам Java (или 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 с шага 1. Например

//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, не должно быть слишком сложно запустить его и с текстовыми потоками.

27 голосов
/ 13 мая 2013

Если вы используете nodejs, попробуйте uglify-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

Вы можете узнать больше о нерасширенном здесь

поэтому после всего этого я получаю файл, который выглядит так:

function foo(bar, baz) {
    console.log("something something");
    return true;
}

обновление 2016-06-07

Похоже, что сопровождающий uglify-js теперь работает на версии 2 , хотя установка такая же.

21 голосов
/ 28 октября 2010

ОБНОВЛЕНИЕ Апрель 2014 :

Элемент beautifier был переписан с тех пор, как я ответил на него в 2010 году. Теперь там есть модуль python, пакет npm для nodejs и файл jar пропал. Пожалуйста, прочитайте страницу проекта на github.com .

Стиль Python:

 $ pip install jsbeautifier

Стиль NPM:

 $ npm -g install js-beautify

чтобы использовать его:

 $ js-beautify file.js

Оригинальный ответ

Добавление к ответу @Alan Storm

beautifier командной строки, основанный на http://jsbeautifier.org/, стал немного проще в использовании, потому что теперь он (альтернативно) основан на движке JavaScript V8 (код C ++) вместо Rhino (движок JS на основе Java, упакован как "js.jar"). Таким образом, вы можете использовать V8 вместо носорога.

Как использовать:

загрузите zs-файл jsbeautifier.org с 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

новый (альтернатива)

установить / скомпилировать v8 lib из svn, см. V8 / README.txt в вышеупомянутом zip-файле

  ./jsbeautify somefile.js

- параметры командной строки немного отличаются от версии для носорога,

- и отлично работает в Eclipse при настройке в качестве «внешнего инструмента»

3 голосов
/ 26 марта 2019

в Ubuntu 18.04 LTS

$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js
1 голос
/ 16 февраля 2014

В консоли вы можете использовать Художественный стиль (a.k.a. AStyle) с --mode=java.
Он отлично работает, бесплатный, с открытым исходным кодом и кроссплатформенный (Linux, Mac OS X, Windows).

1 голос
/ 27 января 2013

Я не могу добавить комментарий к принятому ответу, поэтому вы видите сообщение, которого не должно было быть вообще.

По сути, мне также нужен был beautifier javascript в java-коде, и, к моему удивлению, ни один не доступен, насколько я мог найти. Так что я сам написал его полностью на основе принятого ответа (он оборачивает скрипт jsbeautifier.org beautifier .js, но вызывается из Java или командной строки).

Код находится по адресу https://github.com/belgampaul/JsBeautifier

Я использовал носорога и beautifier.js

ИСПОЛЬЗОВАНИЕ из консоли: отступ скрипта java -jar jsbeautifier.jar

пример: java -jar jsbeautifier.jar "function ff () {return;}" 2

ИСПОЛЬЗОВАНИЕ из кода Java: public static String jsBeautify (String jsCode, int indentSize)

Вы можете расширить код. В моем случае мне понадобился только отступ, чтобы я мог проверять сгенерированный javascript во время разработки.

В надежде, что это сэкономит вам время в вашем проекте.

0 голосов
/ 15 сентября 2014

Используйте современный способ JavaScript:

Используйте Grunt в сочетании с плагином jsbeautifier для Grunt

Вы можете легко установить все в свою среду разработки, используя npm .

Все, что вам нужно, это настроить Gruntfile.js с соответствующими задачами, которые также могут включать конкатенацию файлов, lint, uglify, minify и т. Д., И запустить команду grunt.

0 голосов
/ 20 августа 2013

Я полагаю, когда вы спросили об инструменте командной строки, вы просто хотели украсить все ваши js-файлы в пакетном режиме.

В этом случае Intellij IDEA (протестировано с 11.5) может сделать это.

Вам просто нужно выбрать любой из файлов вашего проекта и выбрать «Код» -> «Переформатировать код ...» в главном меню IDE. Затем в диалоговом окне выберите «все файлы в каталоге ...» и нажмите «Ввод». Просто убедитесь, что вы выделили достаточно памяти для JVM.

0 голосов
/ 01 ноября 2010

Я написал статью, объясняющую, как создать beautifier JavaScript из командной строки , реализованный в JavaScript , менее чем за 5 минут. YMMV.

  1. Загрузите последнюю стабильную версию Rhino и распакуйте ее где-нибудь, например. ~ / DEV / JavaScript / носорог
  2. Загрузите beautify.js, на который ссылается вышеупомянутый jsbeautifier.org, а затем скопируйте его куда-нибудь, например. ~ / DEV / JavaScript / bin / кли-beautifier.js
  3. Добавьте это в конец beautify.js (используя некоторые дополнительные свойства верхнего уровня для JavaScript):

    // Run the beautifier on the file passed as the first argument.
    print( j23s_beautify( readFile( arguments[0] )));
    
  4. Скопируйте и вставьте следующий код в исполняемый файл, например, ~ / 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 $*
    
  5. (необязательно) Добавьте папку с jsbeautifier.js в PATH или перейдите в уже существующую папку.

...