Question

Je suis en train d'écrire un script de commandes dans le but d'embellir le code JavaScript.Il faut travailler à la fois Windows et Linux.

Comment puis-je embellir code JavaScript en utilisant les outils en ligne de commande?

Était-ce utile?

La solution

Tout d'abord, choisissez votre favori Javascript Pretty Print/formatage automatique de la requête.Je préfère l'un à http://jsbeautifier.org/, parce que c'est ce que j'ai trouvé en premier.Téléchargements de son fichier https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

Deuxièmement, télécharger et installer Mozilla du groupe Java moteur Javascript, Rhino."Installer" est un peu trompeur;Télécharger le fichier zip, extraire tout le contenu, le lieu js.jar dans votre classpath Java (ou Library/Java/Extensions sur OS X).Vous pouvez alors exécuter des scripts avec un appel similaire à ce

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

Utilisez la Jolie Impression/formatage automatique de la requête à partir de l'étape 1 à écrire un petit script shell qui va lire dans votre fichier javascript et le lancer à travers la Jolie Impression/formatage automatique de la requête à partir de l'étape un.Par exemple

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

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

Rhino donne javascript un peu plus de fonctions utiles qui ne font pas nécessairement de sens dans le contexte du navigateur, mais le faire dans une console contexte.La fonction d'impression est-ce que vous attendez, et imprime une chaîne de caractères.La fonction readFile accepte un chemin d'accès au fichier de la chaîne en argument et renvoie le contenu de ce fichier.

Vous auriez du appeler le au-dessus 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 assortir de Java et de Javascript dans votre Rhino exécuter des scripts, donc si vous connaissez un peu de Java il ne devrait pas être trop difficile d'obtenir cette running avec le texte-les cours d'eau comme bien.

Autres conseils

Si vous êtes à l'aide de nodejs puis essayez 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 il de la sorte:

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

uglify utilise des espaces pour l'indentation par défaut, donc si je veux convertir le 4-l'espace-l'indentation pour les onglets, je peux le lancer à travers unexpand qui Ubuntu 12.04 est livré avec:

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

Ou vous pouvez tout faire en une seule fois:

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

Vous pouvez en savoir plus sur unexpand ici

donc 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 de uglify-js est en train de travailler sur la version 2 si l'installation est la même.

Mise à JOUR avril 2014:

Le formatage automatique de la requête a été réécrit depuis que j'ai répondu à cette question en 2010.Il y a maintenant un module python là, d'un mécanisme de prévention de Package pour nodejs, et le fichier jar est allé.Veuillez lire les page du projet sur github.com.

Python style:

 $ pip install jsbeautifier

NPM style:

 $ npm -g install js-beautify

pour l'utiliser:

 $ js-beautify file.js

Réponse originale à cette question

Ajouter à la Réponse de @Alan Tempête

la ligne de commande de formatage automatique de la requête fondée sur http://jsbeautifier.org/ a obtenu un peu plus facile à utiliser, car il est maintenant (en alternance) basé sur le moteur javascript V8 (code c++) au lieu de rhino (java JS moteur, emballé comme "js.jar").Ainsi, vous pouvez utiliser V8 au lieu de rhinocéros.

Comment l'utiliser:

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

(c'est une URL de téléchargement lié à un fichier zip comme 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 évoquées dans le fichier zip

  ./jsbeautify somefile.js

-a légèrement différentes options de ligne de commande que le rhino version,

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

Sur Ubuntu 18.04 LTS

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

Dans la console, vous pouvez utiliser Le Style Artistique (un.k.un.AStyle) avec --mode=java.
Il fonctionne très bien et il est gratuit, open-source et multi-plateforme (Linux, Mac OS X, Windows).

Je ne suis pas en mesure d'ajouter un commentaire pour la accepté de répondre tellement c'est pourquoi vous voyez un poste qui n'existaient pas dans la première place.

Fondamentalement, j'ai aussi besoin d'un javascript formatage automatique de la requête dans un code java et à ma grande surprise, aucun n'est disponible aussi loin que je pouvais trouver.Donc j'ai codé moi-même entièrement basé sur la accepté de répondre (il s'enroule le jsbeautifier.org formatage automatique de la requête .js script mais qui est appelée à partir de java ou de la ligne de commande).

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

J'ai utilisé le rhinocéros et le beautifier.js

L'UTILISATION de la console:java-jar jsbeautifier.jar script de l'indentation

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

L'UTILISATION de code java:public static String jsBeautify(String jsCode, int indentSize)

Vous êtes les bienvenus pour prolonger le code.Dans mon cas, j'ai seulement besoin de l'indentation pour que je puisse vérifier le javascript généré en développement.

En espérant qu'il vous permettra de gagner du temps dans votre projet.

J'ai écrit un article expliquant comment construire un en ligne de commande JavaScript formatage automatique de la requête implémenté en JavaScript en moins de 5 minutes.YMMV.

  1. Télécharger la dernière version stable de Rhinocéros et de les placer quelque part, par exemple~/dev/javascript/rhino
  2. Télécharger beautify.js qui est référencé à partir susmentionnés jsbeautifier.org puis le copier quelque part, par exemple~/dev/javascript/bin/cli-beautifier.js
  3. Ajoutez 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, par exemple~/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. (facultatif) Ajoutez le dossier avec jsbeautifier.js au CHEMIN d'accès ou le déplacement de certains dossiers déjà là.

Je crois que lorsque vous m'avez demandé outil de ligne de commande tu voulais juste pour embellir tous vos fichiers js dans le lot.

Dans ce cas, Intellij IDEA (testé avec 11.5) peuvent le faire.

Il vous suffit de sélectionner l'un de vos fichiers de projet et sélectionnez l'option "Code"->"Reformater le 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 consacré assez de mémoire de la JVM.

L'utilisation moderne de façon JavaScript:

Utilisation Grunt en combinaison avec la jsbeautifier plugin Grunt

Vous pouvez à tout installer facilement dans votre environnement de dev à l'aide de npm.

Tout ce que vous aurez besoin est un Gruntfile.js avec les tâches appropriées, ce qui peut également impliquer la concaténation des fichiers, de la charpie, uglify, rapetisser, etc, et exécutez la commande grunt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top