Сведения о вопросе

Oleksandr

04:54, 3rd August, 2020

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

Просмотров: 454   Ответов: 9

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

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



  Сведения об ответе

P_S_S

05:43, 18th August, 2020

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

Во-вторых, загрузите и установите движок Mozilla group Java на основе Javascript, Rhino . "Install" немного вводит в заблуждение; загрузите файл zip, извлеките все, поместите js.jar в свой Java classpath (или Library/Java/Extensions в OS X). Затем вы можете запускать сценарии с вызовом, подобным этому

java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js

Используйте качественную печать/украшение из Шага 1, чтобы написать небольшой скрипт, shell, что прочитаете в файле javascript и запустить его через качественную печать/украшение из шага один. Например

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


  Сведения об ответе

padenie

01:46, 23rd August, 2020

Если вы используете 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-space-indentation в вкладки, я могу запустить его через unexpand , который поставляется с Ubuntu 12.04:

unexpand --tabs=4 cutefoo.js > cuterfoo.js

Или вы можете сделать это все за один раз:

uglifyjs foo.js --beautify | unexpand --tabs=4 > cutestfoo.js

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

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

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

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

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


  Сведения об ответе

PAGE

01:21, 21st August, 2020

Обновление апрель 2014 :

The beautifier был переписан с тех пор, как я ответил на этот вопрос в 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/ стал немного проще в использовании, потому что теперь он (альтернативно) основан на движке V8 javascript (код c++) вместо rhino (движок java-based JS, упакованный как "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

новая альтернатива)

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

  ./jsbeautify somefile.js

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

-и отлично работает в Eclipse, когда настроен как "External Tool"


  Сведения об ответе

LAST

17:35, 9th August, 2020

На Ubuntu 18.04 LTS

$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js

  Сведения об ответе

ЯЯ__4

01:17, 26th August, 2020

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

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

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

Я использовал rhino и beautifier.js

USAGE из консоли: java -jar jsbeautifier.jar отступ скрипта

пример: java -jar jsbeautifier.jar "функция ff() {return;}" 2

USAGE из кода java: публичная статическая строка jsBeautify(String jsCode, int indentSize)

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

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


  Сведения об ответе

ITSME

05:30, 4th August, 2020

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


  Сведения об ответе

ITSME

06:22, 2nd August, 2020

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

  1. Скачайте последнюю версию stable 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 или переместите ее в какую-то уже существующую папку.


  Сведения об ответе

pumpa

04:39, 13th August, 2020

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

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

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


  Сведения об ответе

COOL

21:06, 1st October, 2020

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

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться