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

StackOverflow https://stackoverflow.com/questions/18985

Вопрос

Я пишу пакетный скрипт, чтобы украсить код 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 минут.ИММВ.

  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:

Использование Ворчание в сочетании с плагин jsbeautifier для Grunt

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top