Командная строка JavaScript-код, который работает в Windows и Linux

Я ищу код, который поддерживает JavaScript, и работает как в Windows, так и в Linux и может использоваться в пакетных сценариях. Любые рекомендации?

Ответ 1

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

Ответ 2

Если вы используете 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

Вы можете узнать больше об unpand здесь

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

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

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

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

Ответ 3

ОБНОВЛЕНИЕ Апрель 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/ стала немного проще в использовании, поскольку теперь она (альтернативно) основана на V8 javascript engine (С++ code) вместо носорога (java-JS-движок, упакованный как "js.jar" ). Таким образом, вы можете использовать V8 вместо носорога.

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

загрузить jsbeautifier.org zip файл из http://github.com/einars/js-beautify/zipball/master

(это URL-адрес загрузки, связанный с zip файлом, например http://download.github.com/einars-js-beautify-10384df.zip)

old (больше не работает, файл jar отсутствует)

  java -jar js.jar  name-of-script.js

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

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

  ./jsbeautify somefile.js

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

- и отлично работает в Eclipse при настройке в качестве "внешнего инструмента"

Ответ 4

Инструмент My Pretty Diff полностью написан на JavaScript, поэтому он работает одинаково хорошо во всех операционных системах. Он поддерживает украшение и минимизацию JavaScript, CSS, любой язык разметки, который использует разделители стиля XML, включая HTML.

http://prettydiff.com/?m=beautify

Ответ 6

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

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

Код находится в https://github.com/belgampaul/JsBeautifier

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

ИСПОЛЬЗОВАНИЕ с консоли: java -jar jsbeautifier.jar script отступ

example: java -jar jsbeautifier.jar "function ff() {return;}" 2

ИСПОЛЬЗОВАНИЕ из java-кода: public static String jsBeautify (String jsCode, int indentSize)

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

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

Ответ 7

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

  • Загрузите последний стабильный Rhino и распакуйте его где-нибудь, например. ~/DEV/JavaScript/носорог
  • Загрузите beautify.js, на который ссылается вышеупомянутый jsbeautifier.org, затем скопируйте его где-нибудь, например. ~/DEV/JavaScript/bin/CLI-beautifier.js
  • Добавьте это в конец beautify.js(используя некоторые дополнительные свойства верхнего уровня для JavaScript):

    // Run the beautifier on the file passed as the first argument.
    print( j23s_beautify( readFile( arguments[0] )));
    
  • Скопируйте вставьте следующий код в исполняемый файл, например. ~/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 $*
    
  • (необязательно) Добавьте папку с jsbeautifier.js в PATH или переместитесь в какую-то папку уже там.

Ответ 8

Это очень полезный веб-сайт, чтобы украсить/отложить ваши js файлы. я часто использую его. Проверьте это: http://jsbeautifier.org/

Ответ 10

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

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

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

Ответ 11

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

Ответ 12

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

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

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

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

Ответ 13

Проблема с выделением украшений - выбор выходных данных и фильтрация, а также отсутствие серьезных осветлителей командной строки. Недавно я начал модифицировать компрессор YUI, чтобы украсить код. Если вы хотите сделать свой собственный декоратор, я должен настоятельно рекомендовать этот подход. YUI является открытым исходным кодом и поставляется с файлом сборки ant, что упрощает его изменение и компиляцию.

Ответ 15

Если вы используете блокнот ++, здесь находится плагин для блокнота ++ http://www.sunjw.us/jsminnpp/

Ответ 16

Попробуйте плагин notepad ++ JSMinNpp (Изменено имя для JSTool с версии 1.15)

http://www.sunjw.us/jsminnpp/