Pregunta

Estoy escribiendo un script por lotes para embellecer el código JavaScript.Necesita funcionar en ambos ventanas y linux.

¿Cómo puedo embellecer el código JavaScript usando las herramientas de línea de comandos?

¿Fue útil?

Solución

Primero, elija su Pretty Print/Beautifier favorito basado en Javascript.prefiero el de 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 Javascript basado en Java del grupo Mozilla. Rinoceronte."Instalar" es un poco engañoso;Descargue el archivo zip, extraiga todo, coloque js.jar en su classpath de Java (o Biblioteca/Java/Extensiones en OS X).Luego puede ejecutar scripts con una invocación similar a esta

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

Utilice Pretty Print/Beautifier del paso 1 para escribir un pequeño script de shell que leerá su archivo javascript y lo ejecutará a través de Pretty Print/Beautifier desde el paso uno.Por ejemplo

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

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

Rhino ofrece a JavaScript algunas funciones adicionales útiles que no necesariamente tienen sentido en el contexto del navegador, pero sí en el contexto de la consola.La función print 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.

Invocarías lo anterior algo como

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

Puede mezclar y combinar Java y Javascript en sus scripts de ejecución de Rhino, por lo que si sabe un poco de Java, no debería ser demasiado difícil ejecutarlo también con secuencias de texto.

Otros consejos

Si estás usando nodejs entonces intenta feo-js

En Ubuntu 12.04, asumiendo que ya tienes nodejs instalado, puedes instalar uglify con:

sudo npm install -g uglify-js

Y luego obtenga las opciones:

uglifyjs -h

Entonces, si tengo un archivo fuente foo.js que se parece a esto:

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

Puedo embellecerlo así:

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

uglify usa espacios para la sangría de forma predeterminada, por lo que si quiero convertir la sangría de 4 espacios en pestañas, puedo ejecutarla unexpand con el que viene Ubuntu 12.04:

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

O puedes hacerlo todo de una vez:

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

Puedes obtener más información sobre unexpand aquí

Entonces, 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

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

ACTUALIZACIÓN Abril 2014:

El embellecedor se ha reescrito desde que respondí esto en 2010.Ahora hay un módulo de Python, un paquete npm para nodejs y el archivo jar desapareció.Por favor lea el página del proyecto en github.com.

Estilo pitón:

 $ pip install jsbeautifier

Estilo del MNP:

 $ npm -g install js-beautify

para usarlo:

 $ js-beautify file.js

Respuesta original

Agregando a la respuesta de @Alan Storm

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

Cómo utilizar:

descargue el archivo zip jsbeautifier.org desdehttp://github.com/einars/js-beautify/zipball/master

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

antiguo (ya no funciona, el archivo jar desapareció)

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

nuevo (alternativo)

instalar/compilar v8 lib DESDE svn, consulte v8/README.txt en el archivo zip mencionado anteriormente

  ./jsbeautify somefile.js

-tiene opciones de línea de comando ligeramente diferentes a las de la versión de rhino,

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

En Ubuntu 18.04LTS

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

En la consola, puedes usar Estilo artístico (también conocido comoEstilo A) con --mode=java.
Funciona muy bien y es gratuito, de código abierto y multiplataforma (Linux, Mac OS X, Windows).

No puedo agregar un comentario a la respuesta aceptada, por eso 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, hasta donde pude encontrar, no hay ninguno disponible.Así que codifiqué uno yo mismo basándome completamente en la respuesta aceptada (envuelve el script jsbeautifier.org beautifier .js pero se puede llamar desde Java o la línea de comando).

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

Usé rhino y beautifier.js

USO desde consola:sangría del script java -jar jsbeautifier.jar

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

USO del código java:cadena estática pública jsBeautify (cadena jsCode, int indentSize)

Le invitamos a ampliar el código.En mi caso, solo necesitaba la sangría para poder verificar el javascript generado durante el desarrollo.

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

He escrito un artículo que explica cómo construir un Embellecedor de JavaScript de línea de comandos implementado en JavaScript en menos de 5 minutos.YMMV.

  1. Descargue la última versión estable de Rhino y descomprímala en algún lugar, p.~/dev/javascript/rinoceronte
  2. Descargue beautify.js al que se hace referencia en jsbeautifier.org antes mencionado y luego cópielo en algún lugar, por ejemplo.~/dev/javascript/bin/cli-beautifier.js
  3. Agregue esto al final de beautify.js (usando algunas propiedades de nivel superior adicionales para JavaScript):

    // Run the beautifier on the file passed as the first argument.
    print( j23s_beautify( readFile( arguments[0] )));
    
  4. Copie y pegue el siguiente código en un archivo ejecutable, p.~/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. (opcional) Agregue la carpeta con jsbeautifier.js a PATH o muévala a alguna carpeta que ya esté allí.

Creo que cuando preguntaste sobre la herramienta de línea de comandos solo querías embellecer todos tus archivos js por lotes.

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

Sólo necesita seleccionar cualquiera de los archivos de su proyecto y seleccionar "Código" -> "Reformatear código..." en el menú principal del IDE.Luego, en el cuadro de diálogo, seleccione "todos los archivos en el directorio ..." y presione "enter".Solo asegúrese de haber dedicado suficiente memoria para la JVM.

Utilice la forma moderna de JavaScript:

Usar Gruñido en combinación con el Complemento jsbeautifier para Grunt

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top