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

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

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

Мой инструмент Pretty Diff написан полностью на JavaScript, поэтому он одинаково хорошо работает во всех операционных системах. Он поддерживает улучшение и минимизацию JavaScript, CSS, любого языка разметки, который использует разделители стиля XML, включая HTML. prettydiff.com/?m=beautify
austin cheney 22.08.2009 12:33:29
9 ОТВЕТОВ
РЕШЕНИЕ

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

62
16.01.2017 00:57:58
ссылка, которую вы дали, не работает, я думаю, она должна быть такой, jsbeautifier.org
Sinan 12.01.2010 13:26:40
Как я это сделал: ~ $ sudo apt-get install libv8-dev libv8-2.2.18: ~ $ cd einars-js-beautify-f90ce72 / v8: ~ $ g ++ -o jsbeautify jsbeautify.cpp -lv8 -Llib -lpthread Это просто работает. Спасибо Эйнару Лиелманису и всем участникам!
Беров 6.03.2011 13:45:20
Кажется, это движущаяся цель. Теперь информация на сайте jsbeautifier говорит, что она написана на python.
seth 26.04.2011 03:57:03
Обновление для пользователей cmdline. В следующем репозитории легко установить автономные инструменты командной строки для красивой печати js: github.com/einars/js-beautify.git
drhodes 29.08.2012 19:31:53
Используйте современный подход JS с использованием Grunt: stackoverflow.com/questions/18985/…
Tchakabam 15.09.2014 19:53:23

ОБНОВЛЕНИЕ Апрель 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, когда настроен как «Внешний инструмент»

27
28.09.2016 17:48:37
Или, если вы предпочитаете python, а не v8, там также есть модуль python.
keturn 4.10.2011 00:15:43
Пакет npm называется js-
brafdlog 13.10.2015 20:31:27

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

1
1.09.2011 23:55:46

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

По сути, мне также нужен был 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 во время разработки.

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

2
28.09.2016 17:46:09

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

29
23.05.2017 12:09:59
Это правильный ответ для командной строки JavaScript beautifer.
bitek 19.04.2016 09:05:35
uglifyjs -bделает гораздо больше, чем просто исправляет отступы, он перестраивает и переписывает код, возможно, для эффективности. Это не то, что я хотел. Я использовал более старую версию, в Ubuntu 14.04.
Sam Watkins 14.08.2017 03:28:32
Не могли бы вы объяснить немного больше, как uglifyjs -bпереставляет и переписывает код?
erapert 14.08.2017 18:06:38

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

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

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

1
20.08.2013 19:20:10

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

3
29.01.2016 13:18:01

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

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

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

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

2
15.09.2014 19:49:10

На Ubuntu 18.04 LTS

$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js
8
26.03.2019 13:59:00
Лучший ответ на данный момент. Для использования на месте украситьjs-beautify -o file.js file.js
Petr Javorik 4.11.2019 09:58:42