Comment embellir le code JavaScript en utilisant la ligne de commande?

j'écris un script par lot afin d'embellir le code JavaScript. Il doit fonctionner à la fois sur Windows et Linux .

comment embellir le code JavaScript en utilisant les outils en ligne de commande?

84
demandé sur Bhargav Rao 2008-08-21 02:29:22

8 réponses

tout d'abord, choisissez votre Javascript préféré basé sur Pretty Print/Beautifier. Je préfère celui de http://jsbeautifier.org/ , parce que c'est ce que j'ai trouvé en premier. Télécharge son fichier https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

Deuxièmement, téléchargez et installez le moteur Javascript basé sur Java du groupe Mozilla, Rhino . "Installer" est un peu un peu trompeur; télécharger le fichier zip, tout extraire, place js.jar dans votre classpath Java (ou bibliothèque / Java / Extensions sur OS X). Vous pouvez alors lancer des scripts avec une invocation similaire à celle-ci

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

utilisez L'imprimante Pretty Print/Beautifier de l'étape 1 pour écrire un petit script shell qui lira dans votre fichier javascript et l'exécutera à travers L'imprimante Pretty Print/Beautifier de l'étape 1. Par exemple

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

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

Rhino donne javascript quelques fonctions supplémentaires utiles qui n'ont pas nécessairement de sens dans un contexte de navigateur, mais le font dans un contexte de console. La fonction print fait ce à quoi vous vous attendez, et imprime une chaîne de caractères. La fonction readFile accepte une chaîne de chemin de fichier comme argument et renvoie le contenu de ce fichier.

vous invoquez ce qui précède quelque chose comme

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

vous pouvez mélanger et faire correspondre Java et Javascript dans vos scripts Rhino run, donc si vous connaissez un peu de Java it ça ne devrait pas être trop dur de faire tourner ça avec des flux de texte aussi.

59
répondu Alan Storm 2017-01-16 00:57:58

si vous utilisez nodejs puis essayer uglify-js

sur Ubuntu 12.04, en supposant que vous avez déjà nodejs installé, vous pouvez installer uglify avec:

sudo npm install -g uglify-js

et puis obtenir les options:

uglifyjs -h

Donc, si j'ai un fichier source foo.js qui ressemble à ceci:

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

je peux embellir comme:

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

uglify utilise des espaces pour indentation par défaut donc si je veux convertir l'indentation de 4 espaces en onglets, je peux l'exécuter à travers unexpand qui Ubuntu 12.04 vient avec:

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

ou vous pouvez tout faire d'un seul coup:

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

vous pouvez en savoir plus sur unexpand ici

alors, après tout cela je me retrouve avec un fichier qui ressemble à ceci:

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

mise à jour 2016-06-07

il semble que le responsable d'uglify-js travaille maintenant sur version 2 bien que l'installation est la même.

23
répondu erapert 2017-05-23 12:09:59

mise à jour avril 2014 :

le plus beau a été réécrit depuis que j'ai répondu à cela en 2010. Il y a maintenant un module python là-dedans, un paquet npm pour nodejs, et le fichier jar a disparu. Veuillez lire la page du projet sur github.com .

style Python:

 $ pip install jsbeautifier

NPM style:

 $ npm -g install js-beautify

pour l'utiliser:

 $ js-beautify file.js

réponse Originale à cette question

ajout à Answer de @Alan Storm

la ligne de commande plus belle basée sur http://jsbeautifier.org / est devenu un peu plus facile à utiliser, car il est maintenant (alternativement) basé sur le moteur V8 javascript (C++ code) au lieu de rhino (java-based js engine, packaged as" js.pot.)" Donc vous pouvez utiliser V8 au lieu de rhino.

comment utiliser:

télécharger jsbeautifier.org fichier zip à partir de http://github.com/einars/js-beautify/zipball/master

(URL de téléchargement liée à un fichier zip tel que ) http://download.github.com/einars-js-beautify-10384df.zip )

ancien (ne fonctionne plus, le fichier jar est parti)

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

nouveau (alternative)

installer / compiler V8 lib à partir de svn, voir V8 / README.txt dans le fichier zip susmentionné

  ./jsbeautify somefile.js

- offre des options de ligne de commande légèrement différentes de la version rhino,

- et fonctionne très bien dans Eclipse lorsqu'il est configuré comme un "outil externe "

15
répondu knb 2016-09-28 17:48:37

Je ne suis pas en mesure d'ajouter un commentaire à la réponse acceptée de sorte que ce est pourquoi vous voyez un poste qui n'aurait pas dû exister en premier lieu.

au fond, j'avais aussi besoin d'un embellisseur javascript dans un code java et, à ma grande surprise, aucun n'est disponible autant que j'ai pu trouver. Donc j'en ai codé un moi-même entièrement basé sur la réponse acceptée (il enveloppe le jsbeautifier.org plus belle .js script mais est appelable depuis java ou la ligne de commande).

le code est situé à https://github.com/belgampaul/JsBeautifier

j'ai utilisé du rhinocéros et plus beau.js

usage de la console: java-jar jsbeautifier.jar script indentation

exemple: java-jar jsbeautifier.jar "de la fonction ff() {return;}" 2

utilisation du code java: public static String Jsbeautify (String jsCode, int indentSize)

vous pouvez étendre le code. Dans mon cas, j'avais seulement besoin de l'indentation pour pouvoir vérifier le javascript généré pendant le développement.

dans l'espoir de vous faire gagner du temps dans votre projet.

1
répondu ioikka 2016-09-28 17:46:09

j'ai écrit un article expliquant comment construire un JavaScript beautifier ligne de commande implémentée en JavaScript en moins de 5 minutes. YMMV.

  1. télécharger le dernier Rhino stable et le déballer quelque part, par exemple ~ / dev / javascript / rhino
  2. Télécharger embellir.js qui est référencé à partir de susnommé jsbeautifier.org ensuite, Copiez-le quelque part, par exemple ~/dev/javascript/bin/cli-beautifier.js
  3. ajouter ceci à la fin de beautify.js (à l'aide de quelques autres propriétés de haut niveau à JavaScript):

    // Run the beautifier on the file passed as the first argument.
    print( j23s_beautify( readFile( arguments[0] )));
    
  4. copier-coller le code suivant dans un fichier exécutable, p.ex. ~/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. (optionnel) ajouter le dossier avec jsbeautifier.js vers le chemin ou se déplaçant vers un dossier déjà là.

0
répondu Shonzilla 2011-09-01 23:55:46

je crois que lorsque vous avez demandé à propos de l'outil en ligne de commande vous vouliez juste embellir tous vos fichiers js dans la fournée.

dans ce cas Intellij IDEA (testé avec 11.5) peut le faire.

il vous suffit de sélectionner l'un de vos fichiers de projet et de sélectionner"Code"-> " Reformat code.."dans les principaux IDE de menu. Puis dans la boîte de dialogue sélectionner "tous les fichiers dans le répertoire ..."et appuyez sur "entrée". Assurez-vous que vous avez assez de mémoire pour le JVM.

0
répondu gumkins 2013-08-20 19:20:10

utiliser le JavaScript moderne voie:

utiliser Grunt en combinaison avec le jsbeautifier plugin pour Grunt

vous pouvez tout installer facilement dans votre environnement dev en utilisant npm .

tout ce que vous aurez besoin est de mettre en place un Gruntfile.js avec les tâches appropriées, qui peuvent également impliquer la concaténation de fichiers, lint, uglify, minify etc, et exécuter le grunt commande.

0
répondu Tchakabam 2014-09-15 19:49:10

dans la console, vous pouvez utiliser Artistic Style (A. K. A. AStyle) avec --mode=java .

Il fonctionne très bien et il est gratuit, open-source et multi-plateforme (Linux, Mac OS X, Windows).

0
répondu tmaric 2016-01-29 13:18:01