Я пишу пакетний сценарій, щоб прикрасити код JavaScript. Він повинен працювати і в Windows, і в Linux .
Як можна прикрасити код JavaScript за допомогою інструментів командного рядка?
Я пишу пакетний сценарій, щоб прикрасити код JavaScript. Він повинен працювати і в Windows, і в Linux .
Як можна прикрасити код JavaScript за допомогою інструментів командного рядка?
Відповіді:
По-перше, виберіть улюблений 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, це не повинно бути занадто важким для запуску цього тексту з потоками тексту.
ОНОВЛЕННЯ Квітень 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, коли він налаштований як "Зовнішній інструмент"
Якщо ви використовуєте 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, хоча установка така ж.
uglifyjs -b
робить набагато більше, ніж просто виправити відступи, він переставляє і переписує код, можливо, для ефективності. Це не те, чого я хотів. Я використовував старішу версію, в Ubuntu 14.04.
uglifyjs -b
переставляти та переписувати код?
$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js
js-beautify -o file.js file.js
У консолі можна використовувати Artistic Style (він же AStyle) з --mode=java
.
Це чудово працює, і це безкоштовно, з відкритим кодом та кросплатформним (Linux, Mac OS X, Windows).
Використовуйте сучасний спосіб JavaScript:
Використовуйте Grunt у поєднанні з плагіном jsbeautifier для Grunt
Ви можете все легко встановити у ваше середовище розробників, використовуючи npm .
Все, що вам знадобиться, - це налаштувати Gruntfile.js з відповідними завданнями, які також можуть включати в себе об'єднання файлів, вказівку, зменшення, мінімізацію тощо та запускати команду grunt.
Я не в змозі додати коментар до прийнятої відповіді, тому ви бачите публікацію, яка не повинна була існувати в першу чергу.
В основному мені також потрібен був красувач 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 під час розробки.
Сподіваємось, це заощадить певний час у вашому проекті.
Я написав статтю, в якій пояснював, як створити красувач JavaScript командного рядка, реалізований у JavaScript, протягом менш ніж 5 хвилин. YMMV.
- Завантажте останній стабільний носоріг і розпакуйте його десь, наприклад ~ / dev / javascript / rhino
- Завантажте 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 або перейдіть до якоїсь вже папки.
Я вважаю, що коли ви запитали про інструмент командного рядка, ви просто хотіли прикрасити всі ваші js-файли партією.
У цьому випадку Intellij IDEA (тестовано з 11.5) може це зробити.
Вам просто потрібно вибрати будь-який із ваших файлів проекту та вибрати головне меню IDE "Код" -> "Код переформатування ..". Потім у діалоговому вікні виберіть "всі файли в каталозі ..." і натисніть "ввести". Просто переконайтеся, що ви виділили достатню кількість пам'яті для JVM.
У вас є кілька варіантів лайнера. Використовуйте з npm або автономно з npx .
npx semistandard "js/**/*.js" --fix
npx standard "js/**/*.js" --fix
npx prettier --single-quote --write --trailing-comma all "js/**/*.js"