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

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

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

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

Во-вторых, загрузите и установите Javascript-движок на базе 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 с первого шага. Например

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

Если вы используете 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, хотя установка такая же.

ОБНОВЛЕНИЕ Апрель 2014 года :

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

Стиль Python:

  $ pip install jsbeautifier 

Стиль NPM:

  $ npm -g install js-beautify 

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

  $ js-beautify file.js 

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

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

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

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

Загрузите zip-файл 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 

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

install / compile v8 lib FROM svn, см. v8 / README.txt в вышеупомянутом zip-файле

  ./jsbeautify somefile.js 

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

– и отлично работает в Eclipse, когда настроен как «Внешний инструмент»,

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

В принципе, мне также нужен 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 при разработке.

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

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

  1. Загрузите последний стабильный Rhino и распакуйте его где-нибудь, например ~ / dev / javascript / rhino
  2. Скачайте beautify.js, на который ссылается вышеупомянутый jsbeautifier.org, затем скопируйте его где-нибудь, например ~ / dev / javascript / bin / cli-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 или переместитесь в какую-то папку уже там.

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

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

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

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

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

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

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

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

Давайте будем гением компьютера.