Embellecedor de código JavaScript de la línea de comando que funciona en Windows y Linux


83

Estoy buscando un embellecedor de código que admita JavaScript y funcione tanto en Windows como en Linux y se pueda usar en scripts por lotes. ¿Alguna recomendación?

59

En primer lugar, elija su Pretty Print/Beautifier basado en Javascript favorito. Prefiero el que está en http://jsbeautifier.org/, porque es lo que encontré primero. Descarga su archivo https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

En segundo lugar, descargue e instale el motor de JavaScript basado en Java del grupo Mozilla, Rhino. "Instalar" es un poco engañoso; Descargue el archivo zip, extraiga todo, coloque js.jar en su classpath Java (o Library/Java/Extensions en OS X). A continuación, puede ejecutar secuencias de comandos con una invocación similar a este

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

Uso del Pretty Print/embellecedor del paso 1 para escribir un pequeño script que leerá en su archivo javascript y ejecutarlo a través de la Pretty Print/embellecedor de paso uno. Por ejemplo

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

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

Rhino da Javascript a unas pocas funciones útiles adicionales que no necesariamente tienen sentido en un contexto navegador, pero lo hacen en un contexto consola. La función de impresión hace lo que cabría esperar e imprime una cadena. La función readFile acepta una cadena de ruta de archivo como argumento y devuelve el contenido de ese archivo.

Se podría invocar lo anterior algo así como

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

Usted puede mezclar y combinar Java y Javascript en las secuencias de comandos de Rhino correr, así que si usted sabe un poco de Java no debería ser demasiado difícil de conseguir este corriendo con flujos de texto también.

+3

el enlace que ha dado está roto, debería ser éste, creo, http: // jsbeautifier .org/ 12 ene. 102010-01-12 13:26:40

  0

Sinan tiene razón. El enlace se movió a http://jsbeautifier.org/ 15 ene. 102010-01-15 20:17:54

+2

Cómo lo hice: : ~ $ sudo apt-get install libv8-dev libv8-2.2.18 : ~ $ cd einars-js-beautify-f90ce72/v8 : ~ $ g ++ -o jsbeautify jsbeautify.cpp -lv8 -Llib -lpthread Simplemente funciona. ¡Gracias a Einar Lielmanis y a todos los involucrados! 06 mar. 112011-03-06 13:45:20

+1

Estos parecen ser un objetivo en movimiento. Ahora la información en el sitio jsbeautifier dice que está escrito en python. 26 abr. 112011-04-26 03:57:03

  0

actualización para los usuarios de cmdline, el siguiente repositorio tiene herramientas de línea de comando autónomas fáciles de instalar para js de impresión bonita: https://github.com/einars/js-beautify.git 29 ago. 122012-08-29 19:31:53

  0

Puede ejecutar esto muy fácilmente sin Java desde el nodo. Hay un paquete npm llamado js-beautify. Después de instalarlo, puede ejecutar el comando js-beautify pasando los archivos que desea como parámetro. Para detalles, ver: https://www.npmjs.com/package/js-beautify 13 oct. 152015-10-13 20:28:37

  0

Debo estar haciendo algo mal. Obtengo * js: excepción de tiempo de ejecución de JavaScript no capturada: ReferenceError: "js_beautify" no está definido. * Después de ejecutar el comando * java -jar js.jar beautify.js my-ugly-javascript.js *. Agregué el 'print (js_beautify (readFile (arguments [0])));' a la parte inferior de beautify.js y estoy ejecutando Rhino 1.7.7. ¿Algunas ideas? 25 ene. 162016-01-25 12:47:40

  0

Encontré que no le gustaba la notación '(function() {..blah ..}());' y por eso nunca ejecutó este código. Comenté el primer '(función() {' y el último '}());' y comenzó a funcionar.Aquí tienes :) 25 ene. 162016-01-25 13:25:04

  0

Tendrás que consultar 'global.js_beautify'. Veré sobre hacer una edición. 16 ene. 172017-01-16 00:26:57


6

Hasta aquí he encontrado un par de ellas en línea:

Todavía estás buscando algo que pueda corrió desde la línea de comandos.

  0

Asumo que has encontrado lo que necesita por ahora (4 años después), pero siempre hay json.tool de Python: http://richardlog.com/post/12743073497/pretty-printing-json-and-xml-on-mac-osx 27 mar. 122012-03-27 16:59:57


-3

Este es un stand-alone embellecedor libre (y mucho más):

http://www.yaldex.com/Free_JavaScript_Editor.htm


11

Mi herramienta Bastante Dif está escrito totalmente en JavaScript por lo que funciona igual de bien en todos los sistemas operativos. Admite el embellecimiento y la minificación de JavaScript, CSS, cualquier lenguaje de marcado que utilice delimitadores de estilo XML, incluido HTML.

http://prettydiff.com/?m=beautify


-1

El problema de adjudicar de embellecedores es la elección de la producción y el filtrado y la falta de Sever embellecedores de línea de comandos graves. Recientemente comencé a modificar el compresor YUI para embellecer el código. Si quieres hacer tu propio embellecedor, recomiendo encarecidamente este enfoque. YUI es de código abierto y viene con un archivo de compilación por lo que es muy fácil de modificar y compilar.


14

actualización de abril de 2014:

El embellecedor se ha reescrito desde que respondí esto en 2010. En la actualidad existe un módulo de Python allí, un paquete de NPM nodejs, y el archivo JAR se ha ido. Por favor, lea el project page on github.com.

estilo Python: estilo

$ pip install jsbeautifier 

NPM:

$ npm -g install js-beautify 

usarlo:

$ js-beautify file.js 

Respuesta original

Agregando a la respuesta de @Alan Storm

el embellecedor de línea de comandos basado en http://jsbeautifier.org/ se ha vuelto un poco más fácil de usar, porque ahora está (alternativamente) basado en el motor javascript V8 (código C++) en lugar de rhino (basado en Java Motor JS, empaquetado como "js.jar"). Entonces puedes usar V8 en lugar de rinoceronte.

Modo de empleo:

de descarga de archivos zip de jsbeautifier.org http://github.com/einars/js-beautify/zipball/master

(esto es una URL de descarga vinculado a un archivo zip como http://download.github.com/einars-js-beautify-10384df.zip)

de edad (ya no funciona, archivo jar se ha ido)

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

nueva (alternativa)

instalación/lib compilar v8 desde SVN, ver v8/README.txt archivo zip antes mencionado

./jsbeautify somefile.js 

-ha ligeramente diferentes opciones de línea de comandos que la versión rinoceronte,

-y funciona muy bien en Eclipse cuando se configura como una "Herramienta externa"

+3

O si prefiere Python sobre v8, también hay * un * módulo de python allí. 04 oct. 112011-10-04 00:15:43

+1

El paquete npm se llama js-beautify 13 oct. 152015-10-13 20:31:27


0

He escrito un artículo que explica cómo crear un command-line JavaScript beautifier implemented in JavaScript en menos de 5 minutos. YMMV.

  1. Download the latest stable Rhino and unpack it somewhere, e.g. ~/dev/javascript/rhino
  2. Download beautify.js which is referenced from aforementioned jsbeautifier.org then copy it somewhere, e.g. ~/dev/javascript/bin/cli-beautifier.js
  3. Add this at the end of beautify.js (using some additional top-level properties to JavaScript):

    // Run the beautifier on the file passed as the first argument. 
    print(j23s_beautify(readFile(arguments[0]))); 
    
  4. Copy-paste the following code in an executable file, e.g. ~/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) Add the folder with jsbeautifier.js to PATH or moving to some folder already there.


0

Este es un sitio web muy útil para embellecer/sangrar sus archivos js. a menudo lo uso. Marque esta : http://jsbeautifier.org/


0

He aquí un embellecedor de JavaScript escrito en .NET apoyo de línea de comandos, así como el modo interactivo: http://www.rahulsingla.com/blog/2010/12/jsbeautifier-net-javascript-beautifier-in-net

No hay dependencia externa, excepto .Net 2.0.


-1

Utilizo este (http://jsbeautifier.atomproject.net/) embellecedor. Está en línea y gratis.


1

No puedo agregar un comentario a la respuesta aceptada, así que es por eso que ves una publicación que no debería haber existido en primer lugar.

Básicamente también necesitaba un embellecedor de JavaScript en un código Java y para mi sorpresa ninguno está disponible por lo que pude encontrar. Así que codifiqué uno por completo basado en la respuesta aceptada (envuelve el script jsbeautifier.org beautifier .js pero se puede llamar desde java o desde la línea de comandos).

El código se encuentra en https://github.com/belgampaul/JsBeautifier

Solía ​​rinoceronte y beautifier.js

de uso desde la consola: java-jar la escritura jsbeautifier.jar muesca

ejemplo: java-jar jsbeautifier.jar " ff función() {return;}" 2

USO de código de java: public static cadena jsBeautify (String jsCode, int indentSize)

Le invitamos a extender el código. En mi caso, solo necesitaba la sangría para poder verificar el javascript generado mientras desarrollaba.

Con la esperanza de que le ahorrará algo de tiempo en su proyecto.


23

Si está utilizando nodejs luego tratar uglify-js

En Ubuntu 12.04, suponiendo que ya ha instalado nodejs, puede instalar afear con:

sudo npm install -g uglify-js

Y a continuación, obtener las opciones:

uglifyjs -h

Así que si tengo un archivo fuente foo.js que se ve así:

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

puedo embellecer este modo:

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

uglify utiliza espacios para el sangrado por defecto, así que si quiero convertir el 4-espacio-muesca a las lengüetas que se puede ejecutar a través de unexpand la que Ubuntu 12.04 viene con:

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

O puede hacerlo todo de una sola vez:

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

Puede encontrar más información sobre unexpand here

así que después de todo esto termino con un archivo que se ve así:

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

actualización 2016-06-07

Se Parece que el mantenedor de uglify-js ahora está trabajando en version 2 aunque la instalación es la misma.

+2

Esta es la respuesta ** correcta ** para un beautifer de código de línea de comando de JavaScript. 19 abr. 162016-04-19 09:05:35

  0

'uglifyjs -b' hace mucho más que corregir la sangría, reorganiza y reescribe el código, tal vez por eficiencia. Eso no es lo que quería. Estaba usando una versión anterior, en Ubuntu 14.04. 14 ago. 172017-08-14 03:28:32

  0

¿Podría explicar un poco más cómo 'uglifyjs -b' reorganiza y reescribe el código? 14 ago. 172017-08-14 18:06:38


-1

Si usa aquí Notepad ++ es un plugin para Notepad ++ http://www.sunjw.us/jsminnpp/


0

Creo que cuando se le preguntó sobre la herramienta de línea de comandos que sólo quería embellecer todos sus archivos js en lotes.

En este caso, Intellij IDEA (probado con 11.5) puede hacerlo.

Simplemente tiene que seleccionar cualquiera de sus archivos de proyecto y seleccionar "Código" -> "Reformatear código ..." en el menú principal de IDE. Luego, en el cuadro de diálogo, seleccione "todos los archivos en el directorio ..." y presione "enter". Solo asegúrese de que haya dedicado suficiente memoria para la JVM.


0

En la consola, puede usar Artistic Style (a.k.a. AStyle) con --mode=java.
Funciona de maravilla y es gratuito, de código abierto y multiplataforma (Linux, Mac OS X, Windows).


0

Usar la moderna forma de JavaScript:

Uso Grunt en combinación con el jsbeautifier plugin for Grunt

Puede instalar todo fácilmente en su entorno de desarrollo utilizando npm.

Todo lo que necesita es configurar un Gruntfile.js con las tareas apropiadas, que también pueden involucrar la concatenación de archivos, pelusa, uglify, minify, etc., y ejecutar el comando grunt.


-1

Prueba el Notepad ++ Plugin JSMinNpp (nombre cambiado a JSTool desde 1,15)

http://www.sunjw.us/jsminnpp/