Frage

Ich schreibe ein Batch-Skript, um JavaScript-Code zu verschönern.Es muss bei beiden funktionieren Windows Und Linux.

Wie kann ich JavaScript-Code mithilfe der Befehlszeilentools verschönern?

War es hilfreich?

Lösung

Wählen Sie zunächst Ihren bevorzugten Javascript-basierten Pretty Print/Beautifier aus.Ich bevorzuge das unter http://jsbeautifier.org/, weil es das ist, was ich zuerst gefunden habe.Lädt seine Datei herunter https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

Zweitens: Laden Sie die Java-basierte Javascript-Engine der Mozilla-Gruppe herunter und installieren Sie sie. Nashorn.„Installieren“ ist etwas irreführend;Laden Sie die ZIP-Datei herunter, extrahieren Sie alles und platzieren Sie js.jar in Ihrem Java-Klassenpfad (oder Library/Java/Extensions unter OS X).Anschließend können Sie Skripte mit einem ähnlichen Aufruf ausführen

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

Verwenden Sie den Pretty Print/Beautifier aus Schritt 1, um ein kleines Shell-Skript zu schreiben, das Ihre Javascript-Datei einliest und sie über den Pretty Print/Beautifier aus Schritt 1 ausführt.Zum Beispiel

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

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

Rhino verleiht Javascript einige zusätzliche nützliche Funktionen, die im Browserkontext nicht unbedingt sinnvoll sind, im Konsolenkontext jedoch schon.Die Funktion print macht das, was Sie erwarten, und gibt eine Zeichenfolge aus.Die Funktion readFile akzeptiert eine Dateipfadzeichenfolge als Argument und gibt den Inhalt dieser Datei zurück.

Sie würden das oben Gesagte etwa so aufrufen

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

Sie können Java und Javascript in Ihren Rhino-Ausführungsskripten kombinieren. Wenn Sie also ein wenig Java beherrschen, sollte es nicht allzu schwierig sein, dies auch mit Textströmen zum Laufen zu bringen.

Andere Tipps

Wenn Sie NodeJS verwenden, versuchen Sie es uglify-js

Unter Ubuntu 12.04 können Sie uglify installieren, sofern Sie bereits nodejs installiert haben:

sudo npm install -g uglify-js

Und dann erhalten Sie die Optionen:

uglifyjs -h

Wenn ich also eine Quelldatei habe foo.js das sieht so aus:

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

Ich kann es so verschönern:

uglifyjs foo.js --beautify --output cutefoo.js

uglify Verwendet standardmäßig Leerzeichen zum Einrücken. Wenn ich also die 4-Leerzeichen-Einrückung in Tabulatoren umwandeln möchte, kann ich sie durchlaufen lassen unexpand was Ubuntu 12.04 mitbringt:

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

Oder Sie erledigen alles auf einmal:

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

Erfahren Sie mehr über unexpand Hier

Nach all dem erhalte ich eine Datei, die so aussieht:

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

Aktualisierung 07.06.2016

Es scheint, dass der Betreuer von uglify-js derzeit daran arbeitet Version 2 obwohl die Installation gleich ist.

UPDATE April 2014:

Der Verschönerer wurde neu geschrieben, seit ich 2010 darauf geantwortet habe.Es gibt dort jetzt ein Python-Modul, ein npm-Paket für nodejs und die JAR-Datei ist weg.Bitte lesen Sie die Projektseite auf github.com.

Python-Stil:

 $ pip install jsbeautifier

NPM-Stil:

 $ npm -g install js-beautify

um es zu benutzen:

 $ js-beautify file.js

Ursprüngliche Antwort

Ergänzung zur Antwort von @Alan Storm

der Befehlszeilenverschönerer basierend auf http://jsbeautifier.org/ ist etwas benutzerfreundlicher geworden, da es jetzt (alternativ) auf der V8-Javascript-Engine (C++-Code) statt auf Rhino (Java-basierte JS-Engine, verpackt als „js.jar“) basiert.Sie können also V8 anstelle von Rhino verwenden.

Wie benutzt man:

Laden Sie die ZIP-Datei von jsbeautifier.org herunter vonhttp://github.com/einars/js-beautify/zipball/master

(Dies ist eine Download-URL, die mit einer ZIP-Datei verknüpft ist, z. B http://download.github.com/einars-js-beautify-10384df.zip)

alt (funktioniert nicht mehr, JAR-Datei ist weg)

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

neu (alternativ)

Installieren/Kompilieren Sie v8 lib VON svn, siehe v8/README.txt in der oben genannten ZIP-Datei

  ./jsbeautify somefile.js

-hat etwas andere Befehlszeilenoptionen als die Rhino-Version,

-und funktioniert hervorragend in Eclipse, wenn es als „externes Tool“ konfiguriert ist.

Auf Ubuntu 18.04 LTS

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

In der Konsole können Sie verwenden Künstlerischer Stil (auch bekannt alsAStyle) mit --mode=java.
Es funktioniert großartig und ist kostenlos, Open Source und plattformübergreifend (Linux, Mac OS X, Windows).

Ich kann der akzeptierten Antwort keinen Kommentar hinzufügen. Deshalb sehen Sie einen Beitrag, der eigentlich gar nicht hätte existieren dürfen.

Grundsätzlich brauchte ich auch einen Javascript-Verschönerer in einem Java-Code und zu meiner Überraschung war, soweit ich ihn finden konnte, keiner verfügbar.Also habe ich eines selbst vollständig auf der Grundlage der akzeptierten Antwort codiert (es umschließt das beautifier .js-Skript von jsbeautifier.org, kann aber über Java oder die Befehlszeile aufgerufen werden).

Der Code befindet sich unter https://github.com/belgampaul/JsBeautifier

Ich habe Rhino und beautifier.js verwendet

NUTZUNG von der Konsole:java -jar jsbeautifier.jar Skripteinzug

Beispiel:java -jar jsbeautifier.jar „function ff() {return;}“ 2

VERWENDUNG aus Java-Code:öffentlicher statischer String jsBeautify(String jsCode, int indentSize)

Gerne können Sie den Code erweitern.In meinem Fall brauchte ich die Einrückung nur, damit ich während der Entwicklung das generierte Javascript überprüfen konnte.

In der Hoffnung, dass Sie dadurch etwas Zeit bei Ihrem Projekt sparen.

Ich habe einen Artikel geschrieben, der erklärt, wie man ein baut In JavaScript implementierter Befehlszeilen-JavaScript-Verschönerer in weniger als 5 Minuten.YMMV.

  1. Laden Sie das neueste stabile Rhino herunter und entpacken Sie es irgendwo, z.B.~/dev/javascript/rhino
  2. Laden Sie beautify.js herunter, auf das von der oben genannten jsbeautifier.org verwiesen wird, und kopieren Sie es dann irgendwohin, z. B.~/dev/javascript/bin/cli-beautifier.js
  3. Fügen Sie dies am Ende von beautify.js hinzu (unter Verwendung einiger zusätzlicher Eigenschaften der obersten Ebene zu JavaScript):

    // Run the beautifier on the file passed as the first argument.
    print( j23s_beautify( readFile( arguments[0] )));
    
  4. Kopieren Sie den folgenden Code und fügen Sie ihn in eine ausführbare Datei ein, z. B.~/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. (optional) Fügen Sie den Ordner mit jsbeautifier.js zu PATH hinzu oder verschieben Sie ihn in einen bereits vorhandenen Ordner.

Ich glaube, als Sie nach dem Befehlszeilentool gefragt haben, wollten Sie nur alle Ihre JS-Dateien im Stapel verschönern.

In diesem Fall kann Intellij IDEA (getestet mit 11.5) dies tun.

Sie müssen lediglich eine Ihrer Projektdateien auswählen und im Hauptmenü der IDE „Code“ -> „Code neu formatieren“ auswählen.Wählen Sie dann im Dialog „Alle Dateien im Verzeichnis ...“ und drücken Sie die Eingabetaste.Stellen Sie einfach sicher, dass Sie genügend Speicher für die JVM reserviert haben.

Nutzen Sie die moderne JavaScript-Methode:

Verwenden Grunzen in Kombination mit dem jsbeautifier-Plugin für Grunt

Mit können Sie alles ganz einfach in Ihrer Entwicklungsumgebung installieren npm.

Sie müssen lediglich eine Gruntfile.js mit den entsprechenden Aufgaben einrichten, die auch Dateiverkettung, Lint, Uglify, Minimierung usw. umfassen können, und den Grunt-Befehl ausführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top