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

javascript command-line-interface pretty-print multiplatform

62611 просмотра

9 ответа

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

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

Автор: grom Источник Размещён: 17.05.2019 02:39

Ответы (9)


60 плюса

Решение

Сначала выберите ваш любимый 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 с первого шага. Например

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

Автор: Alan Storm Размещён: 26.08.2008 03:22

26 плюса

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

Автор: erapert Размещён: 12.05.2013 11:55

17 плюса

ОБНОВЛЕНИЕ Апрель 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 вместо носорога.

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

загрузите 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

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

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

  ./jsbeautify somefile.js

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

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

Автор: knb Размещён: 28.10.2010 09:38

1 плюс

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

Автор: tmaric Размещён: 16.02.2014 02:05

1 плюс

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

По сути, мне также нужен был 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: открытая статическая строка String jsBeautify (String jsCode, int indentSize)

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

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

Автор: ioikka Размещён: 27.01.2013 07:31

0 плюса

Я написал статью, объясняющую, как создать beautifier 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 или перейдите в какую-либо папку, которая уже там.

Автор: Shonzilla Размещён: 31.10.2010 10:08

0 плюса

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

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

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

Автор: gumkins Размещён: 20.08.2013 07:20

0 плюса

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

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

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

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

Автор: Tchakabam Размещён: 15.09.2014 07:49

0 плюса

На Ubuntu 18.04 LTS

$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js
Автор: Serge Stroobandt Размещён: 26.03.2019 01:59
Вопросы из категории :
32x32