J'écris un lot script afin d'embellir le code JavaScript. Il doit fonctionner à la fois sur Windows y Linux .
Comment embellir le code JavaScript en utilisant les outils de la ligne de commande ?
J'écris un lot script afin d'embellir le code JavaScript. Il doit fonctionner à la fois sur Windows y Linux .
Comment embellir le code JavaScript en utilisant les outils de la ligne de commande ?
Tout d'abord, choisissez votre Pretty Print/Beautifier préféré basé sur Javascript. 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
Ensuite, téléchargez et installez le moteur Javascript du groupe Mozilla, basé sur Java, Rhino . Le terme "installer" est un peu trompeur ; téléchargez le fichier zip, extrayez tout, placez js.jar dans votre classpath Java (ou Library/Java/Extensions sur OS X). Vous pouvez ensuite exécuter des scripts avec une invocation similaire à celle-ci
java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js
Utilisez le Pretty Print/Beautifier de l'étape 1 pour écrire un petit shell script qui lira votre fichier javascript et le fera passer par le 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 qui en ont dans un contexte de console. La fonction print fait ce que vous attendez, et imprime une chaîne de caractères. La fonction readFile accepte une chaîne de chemin d'accès à un fichier comme argument et renvoie le contenu de ce fichier.
Vous invoqueriez la commande ci-dessus de la manière suivante
java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js
Vous pouvez mélanger Java et Javascript dans vos scripts d'exécution de Rhino, donc si vous connaissez un peu Java, il ne devrait pas être trop difficile de le faire fonctionner avec des flux de texte également.
Comment je l'ai fait : :~$ sudo apt-get install libv8-dev libv8-2.2.18 :~$ cd einars-js-beautify-f90ce72/v8 :~$ g++ -o jsbeautify jsbeautify.cpp -lv8 -Llib -lpthread Ça marche. Merci à Einar Lielmanis et à toutes les personnes impliquées !
Ceux-ci semblent être une cible mouvante. Maintenant, les informations sur le site de jsbeautifier disent que c'est écrit en python.
MISE À JOUR avril 2014 :
L'embellisseur a été réécrit depuis que j'ai répondu à cette question en 2010. Il y a maintenant un module python dedans, un package npm pour nodejs, et le fichier jar a disparu. Veuillez lire le page du projet sur github.com .
Style python :
$ pip install jsbeautifier
Style NPM :
$ npm -g install js-beautify
pour l'utiliser (ceci retournera le fichier js béatifié sur le terminal, le fichier principal reste inchangé) :
$ js-beautify file.js
A faire en sorte que les changements prennent effet sur le fichier vous devez utiliser cette commande :
$ js-beautify -r file.js
Réponse originale
Complément à la réponse de @Alan Storm
l'embellisseur de ligne de commande basé sur http://jsbeautifier.org/ est devenu un peu plus facile à utiliser, car il est maintenant (alternativement) basé sur le moteur javascript V8 (code c++) au lieu de rhino (moteur JS basé sur java, empaqueté comme "js.jar"). Vous pouvez donc utiliser V8 au lieu de rhino.
Comment l'utiliser :
télécharger le fichier zip de jsbeautifier.org à partir de http://github.com/einars/js-beautify/zipball/master
(il s'agit d'une URL de téléchargement liée à un fichier zip tel que http://download.github.com/einars-js-beautify-10384df.zip )
old (ne fonctionne plus, le fichier jar a disparu)
java -jar js.jar name-of-script.js
nouveau (alternatif)
installer/compiler la librairie v8 à partir de svn, voir v8/README.txt dans le fichier zip susmentionné
./jsbeautify somefile.js
-a des options de ligne de commande légèrement différentes de celles de la version rhino,
-et fonctionne parfaitement dans Eclipse lorsqu'il est configuré comme un "outil externe".
Si vous utilisez nodejs, essayez alors uglify-js
Sous Linux ou Mac, en supposant que vous avez déjà installé nodejs, vous pouvez installer uglify avec :
sudo npm install -g uglify-js
Et ensuite 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 l'embellir comme ça :
uglifyjs foo.js --beautify --output cutefoo.js
uglify
utilise des espaces pour l'indentation par défaut, donc si je veux convertir l'indentation à 4 espaces en tabulations, je peux l'exécuter par le biais de unexpand
avec lequel Ubuntu 12.04 est livré :
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 l'inexpandabilité aquí
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 mainteneur de uglify-js travaille maintenant sur version 2 bien que l'installation soit la même.
uglifyjs -b
fait bien plus que corriger l'indentation, il réorganise et réécrit le code, peut-être dans un souci d'efficacité. Ce n'est pas ce que je voulais. J'utilisais une ancienne version, dans Ubuntu 14.04.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Mon outil Pretty Diff est entièrement écrit en JavaScript et fonctionne donc aussi bien sur tous les systèmes d'exploitation. Il supporte l'embellissement et la minification de JavaScript, CSS, tout langage de balisage qui utilise des délimiteurs de style XML, y compris HTML. prettydiff.com/?m=beautify