Як я можу прикрасити код JavaScript за допомогою командного рядка?


101

Я пишу пакетний сценарій, щоб прикрасити код JavaScript. Він повинен працювати і в Windows, і в Linux .

Як можна прикрасити код JavaScript за допомогою інструментів командного рядка?


Інструмент My Pretty Diff повністю написаний на JavaScript, тому він однаково добре працює у всіх операційних системах. Він підтримує прикрашення та мінімізацію JavaScript, CSS, будь-якої мови розмітки, яка використовує роздільники стилів XML, включаючи HTML. prettydiff.com/?m=beautify

Відповіді:


64

По-перше, виберіть улюблений Javascript на базі красивого друку / краси Я віддаю перевагу тому, що уhttp://jsbeautifier.org/ , тому що це я знайшов першим. Завантажте свій файл https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

По-друге, завантажте та встановіть механізм JavaScript на базі Java, Rhino групи Mozilla . "Встановити" - це трохи оману; Завантажте zip-файл, витягніть все, розмістіть js.jar у своєму класі class Java (або Бібліотека / Java / розширення на OS X). Потім ви можете запускати сценарії із викликом, подібним до цього

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

Використовуйте гарненький друк / красуню з кроку 1, щоб написати невеликий скрипт оболонки, який буде прочитаний у вашому файлі javascript та запустіть його через «Красивий друк / красуню» з першого кроку. Наприклад

//original code    
(function() { ... js_beautify code ... }());

//new code
print(global.js_beautify(readFile(arguments[0])));

Rhino надає javascript декілька додаткових корисних функцій, які не обов'язково мають сенс у контексті браузера, але виконуються в консольному контексті. Функція друку виконує те, що ви очікували, і друкує рядок. Функція readFile приймає рядок шляху файлу як аргумент і повертає вміст цього файлу.

Ви б викликали вищезгадане щось подібне

java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js

Ви можете змішувати Java та Javascript у своїх сценаріях запуску Rhino, тому, якщо ви знаєте трохи Java, це не повинно бути занадто важким для запуску цього тексту з потоками тексту.


3
посилання, яке ви надали, порушено, це, на мій
Сінан

2
Як я це зробив: ~ $ sudo apt-get install libv8-dev libv8-2.2.18: ~ $ cd einars-js-beautify-f90ce72 / v8: ~ $ g ++ -o jsbeautify jsbeautify.cpp -lv8 -Llib -lpthread Це просто працює. Дякую Ейнару Ліельманісу та всім учасникам!
Беров

1
Це здається рухомою ціллю. Тепер інформація на сайті jsbeautifier говорить, що вона написана в python.
Seth

оновлення для користувачів cmdline, наступне репо дозволяє легко встановити окремі інструменти командного рядка для гарного друку js: github.com/einars/js-beautify.git
drhodes

Використовуйте сучасну JS підходу з використанням Grunt: stackoverflow.com/questions/18985 / ...
Tchakabam

33

ОНОВЛЕННЯ Квітень 2014 року :

Косметичка була переписана з того часу, як я відповів на це в 2010 році. Зараз там є модуль python, npm Package для nodejs, і файл jar не зник. Будь ласка, прочитайте сторінку проекту на github.com .

Стиль Python:

 $ pip install jsbeautifier

NPM стиль:

 $ npm -g install js-beautify

використовувати його:

 $ js-beautify file.js

Оригінальна відповідь

Додавання до відповіді @Alan Storm

командний рядок-красувач на базі http://jsbeautifier.org/ став трохи простішим у використанні, тому що зараз він (альтернативно) базується на двигуні javascript V8 (код c ++) замість rhino (JS-двигун на базі Java, упакований як "js.jar"). Таким чином, ви можете використовувати V8 замість носорога.

Як використовувати:

завантажити zip-файл jsbeautifier.org з http://github.com/einars/js-beautify/zipball/master

(Це URL-адреса для завантаження, пов’язана з поштовим файлом, таким як 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

- має трохи інші параметри командного рядка, ніж версія носорога,

-і чудово працює в Eclipse, коли він налаштований як "Зовнішній інструмент"


3
Або якщо ви віддаєте перевагу python над v8, зараз також є модуль python.
keturn

1
Пакет npm називається js-
beautify

30

Якщо ви використовуєте nodejs, то спробуйте uglify -js

У Linux або Mac, якщо припустимо, що у вас вже встановлені nodejs, ви можете встановити помилково за допомогою:

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, хоча установка така ж.


4
Це правильна відповідь для красного коду JavaScript в командному рядку.
бітек

uglifyjs -bробить набагато більше, ніж просто виправити відступи, він переставляє і переписує код, можливо, для ефективності. Це не те, чого я хотів. Я використовував старішу версію, в Ubuntu 14.04.
Сем Уоткінс

Чи можете ви поясніть трохи детальніше, як uglifyjs -bпереставляти та переписувати код?
ерапер

11

На Ubuntu LTS

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

1
Найкраща відповідь на даний момент. Для використання на js-beautify -o file.js file.js
місцях

3

У консолі можна використовувати Artistic Style (він же AStyle) з --mode=java.
Це чудово працює, і це безкоштовно, з відкритим кодом та кросплатформним (Linux, Mac OS X, Windows).


2

Використовуйте сучасний спосіб JavaScript:

Використовуйте Grunt у поєднанні з плагіном jsbeautifier для Grunt

Ви можете все легко встановити у ваше середовище розробників, використовуючи npm .

Все, що вам знадобиться, - це налаштувати Gruntfile.js з відповідними завданнями, які також можуть включати в себе об'єднання файлів, вказівку, зменшення, мінімізацію тощо та запускати команду grunt.


2

Я не в змозі додати коментар до прийнятої відповіді, тому ви бачите публікацію, яка не повинна була існувати в першу чергу.

В основному мені також потрібен був красувач JavaScript в коді Java, і на мій подив, жоден з них не доступний, наскільки я міг знайти. Тому я кодував себе повністю на основі прийнятої відповіді (він обгортає скрипт jsbeautifier.org beautifier .js, але його можна дзвонити з Java або командного рядка).

Код розміщений за адресою https://github.com/belgampaul/JsBeautifier

Я використовував носоріг і beautifier.js

ВИКОРИСТАННЯ з консолі: відступ сценарію java -jar jsbeautifier.jar

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

ВИКОРИСТАННЯ з коду Java: загальнодоступний статичний String jsBeautify (String jsCode, int indentSize)

Ви можете розширити код. У моєму випадку мені знадобився лише відступ, щоб я міг перевірити сформований JavaScript під час розробки.

Сподіваємось, це заощадить певний час у вашому проекті.


1

Я написав статтю, в якій пояснював, як створити красувач JavaScript командного рядка, реалізований у JavaScript, протягом менш ніж 5 хвилин. YMMV.

  1. Завантажте останній стабільний носоріг і розпакуйте його десь, наприклад ~ / 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

Я вважаю, що коли ви запитали про інструмент командного рядка, ви просто хотіли прикрасити всі ваші js-файли партією.

У цьому випадку Intellij IDEA (тестовано з 11.5) може це зробити.

Вам просто потрібно вибрати будь-який із ваших файлів проекту та вибрати головне меню IDE "Код" -> "Код переформатування ..". Потім у діалоговому вікні виберіть "всі файли в каталозі ..." і натисніть "ввести". Просто переконайтеся, що ви виділили достатню кількість пам'яті для JVM.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.