Impresionante módulo de comunidad

Embellecedor JS

Estado de compilación Estado de compilación

Versión PyPI Versión CDNJS Versión NPM Descargar estadísticas

Únase al chat en https://gitter.im/beautify-web/js-beautify Twitter Seguir

Estadísticas de NPM

Este pequeño embellecedor reformateará y reindentará marcadores, JavaScript desagradable, descomprimirá los scripts empaquetados por el popular empaquetador de Dean Edward, así como desobuscará los scripts procesados ​​por javascriptobfuscator.com .

Se necesitan colaboradores

Pongo este frente y el centro arriba porque los propietarios existentes tienen un tiempo muy limitado para trabajar en este proyecto actualmente. Este es un proyecto popular y ampliamente utilizado, pero necesita desesperadamente colaboradores que tengan tiempo para comprometerse a solucionar los errores que enfrentan los clientes y los problemas subyacentes. con el diseño interno y la implementación.

Si está interesado, eche un vistazo a CONTRIBUTING.md , solucione un problema marcado con la etiqueta "Buen primer problema" y envíe un PR. Repita con la mayor frecuencia posible. ¡Gracias!

Uso

Puede embellecer javascript usando JS Beautifier en su navegador web, o en la línea de comandos usando node.js o python.

JS Beautifier está alojado en dos servicios CDN: cdnjs y rawgit.

Para extraer uno de estos servicios, incluya un conjunto de las etiquetas de script a continuación en su documento:

1 2 3 4 5 6 7 8 9 10 11
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.7.5/beautify.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.7.5/beautify-css.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.7.5/beautify-html.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.7.5/beautify.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.7.5/beautify-css.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.7.5/beautify-html.min.js"></script> <script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.7.5/js/lib/beautify.js"></script> <script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.7.5/js/lib/beautify-css.js"></script> <script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.7.5/js/lib/beautify-html.js"></script>

Descargo de responsabilidad: estos son servicios gratuitos, por lo que no hay tiempo de actividad ni garantías de soporte .

Navegador web

Abra jsbeautifier.org . Las opciones están disponibles a través de la interfaz de usuario.

Pitón

Para embellecer usando python:

1 2
$ pip install jsbeautifier $ js-beautify file.js

La salida embellecida va a stdout .

Usar jsbeautifier como biblioteca es simple:

1 2 3
import jsbeautifier res = jsbeautifier.beautify('your javascript string') res = jsbeautifier.beautify_file('some_file.js')

... o, para especificar algunas opciones:

1 2 3 4
opts = jsbeautifier.default_options() opts.indent_size = 2 opts.space_in_empty_paren = True res = jsbeautifier.beautify('some javascript', opts)

Los nombres de las opciones de configuración son los mismos que los nombres de la CLI pero con guiones bajos en lugar de guiones. El ejemplo anterior se establecería en la línea de comandos como --indent-size 2 --space-in-empty-paren .

JavaScript

Como alternativa al script Python, puede instalar el paquete NPM js-beautify . Cuando se instala globalmente, proporciona un script ejecutable js-beautify . Al igual que con el script Python, el resultado embellecido se envía a stdout menos que se configure lo contrario.

1 2
$ npm -g install js-beautify $ js-beautify foo.js

También puede usar js-beautify como una biblioteca de node (instalar localmente, el npm predeterminado de npm ):

1
$ npm install js-beautify

Importe y llame al método de embellecedor apropiado para javascript (js), css o html. Las tres firmas de métodos son beautify(code, options) . El code es una cadena de código para embellecer. Las opciones son un objeto con la configuración que desea como se usa para embellecer el código.

Los nombres de las opciones de configuración son los mismos que los nombres de la CLI pero con guiones bajos en lugar de guiones. Por ejemplo, --indent-size 2 --space-in-empty-paren sería { indent_size: 2, space_in_empty_paren: true } .

1 2 3 4 5 6 7 8 9
var beautify = require('js-beautify').js, fs = require('fs'); fs.readFile('foo.js', 'utf8', function (err, data) { if (err) { throw err; } console.log(beautify(data, { indent_size: 2, space_in_empty_paren: true })); });

Opciones

Estos son los indicadores de línea de comandos para los scripts Python y JS:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
CLI Options: -f, --file Input file(s) (Pass '-' for stdin) -r, --replace Write output in-place, replacing input -o, --outfile Write output to file (default stdout) --config Path to config file --type [js|css|html] ["js"] -q, --quiet Suppress logging to stdout -h, --help Show this help -v, --version Show the version Beautifier Options: -s, --indent-size Indentation size [4] -c, --indent-char Indentation character [" "] -t, --indent-with-tabs Indent with tabs, overrides -s and -c -e, --eol Character(s) to use as line terminators. [first newline in file, otherwise "\n] -n, --end-with-newline End output with newline --editorconfig Use EditorConfig to set up the options -l, --indent-level Initial indentation level [0] -p, --preserve-newlines Preserve line-breaks (--no-preserve-newlines disables) -m, --max-preserve-newlines Number of line-breaks to be preserved in one chunk [10] -P, --space-in-paren Add padding spaces within paren, ie. f( a, b ) -E, --space-in-empty-paren Add a single space inside empty paren, ie. f( ) -j, --jslint-happy Enable jslint-stricter mode -a, --space-after-anon-function Add a space before an anonymous function's parens, ie. function () -b, --brace-style [collapse|expand|end-expand|none][,preserve-inline] [collapse,preserve-inline] -u, --unindent-chained-methods Don't indent chained method calls -B, --break-chained-methods Break chained method calls across subsequent lines -k, --keep-array-indentation Preserve array indentation -x, --unescape-strings Decode printable characters encoded in xNN notation -w, --wrap-line-length Wrap lines at next opportunity after N characters [0] -X, --e4x Pass E4X xml literals through untouched --good-stuff Warm the cockles of Crockford's heart -C, --comma-first Put commas at the beginning of new line instead of end -O, --operator-position Set operator position (before-newline|after-newline|preserve-newline) [before-newline]

Que corresponden a las teclas de opción subrayadas para ambas interfaces de biblioteca

valores predeterminados por opciones de CLI

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
{ "indent_size": 4, "indent_char": " ", "indent_with_tabs": false, "eol": "\n", "end_with_newline": false, "indent_level": 0, "preserve_newlines": true, "max_preserve_newlines": 10, "space_in_paren": false, "space_in_empty_paren": false, "jslint_happy": false, "space_after_anon_function": false, "brace_style": "collapse", "unindent_chained_methods": false, "break_chained_methods": false, "keep_array_indentation": false, "unescape_strings": false, "wrap_line_length": 0, "e4x": false, "comma_first": false, "operator_position": "before-newline" }

valores predeterminados no expuestos en el cli

1 2 3 4
{ "eval_code": false, "space_before_conditional": true }

Observe que no todos los valores predeterminados están expuestos a través de la CLI. Históricamente, las API de Python y JS no han sido 100% idénticas. Por ejemplo, space_before_conditional actualmente es solo JS y no es direccionable desde el script de CLI. Todavía hay algunos otros casos adicionales manteniéndonos al 100% de compatibilidad API.

Loading settings from environment or .jsbeautifyrc (JavaScript-Only)

Además de los argumentos de la CLI, puede pasar la configuración al ejecutable JS a través de:

  • cualquier variable de entorno jsbeautify_ jsbeautify_ prefijada
  • un archivo con formato JSON indicado por el parámetro --config
  • un archivo .jsbeautifyrc que contiene datos JSON en cualquier nivel del sistema de archivos por encima de $PWD

Las fuentes de configuración proporcionadas anteriormente en esta pila anularán las posteriores.

Setting inheritance and Language-specific overrides

La configuración es un árbol poco profundo cuyos valores se heredan para todos los idiomas, pero se pueden anular. Esto funciona para la configuración que se pasa directamente a la API en cualquier implementación. En la implementación de Javascript, la configuración cargada desde un archivo de configuración, como .jsbeautifyrc, puede También use herencia / anulación.

A continuación se muestra un árbol de configuración de ejemplo que muestra todas las ubicaciones admitidas para los nodos de anulación de idioma. Usaremos indent_size para analizar cómo se comportaría esta configuración, pero se puede heredar o anular cualquier cantidad de configuraciones:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
{ "indent_size": 4, "html": { "end_with_newline": true, "js": { "indent_size": 2 }, "css": { "indent_size": 2 } }, "css": { "indent_size": 1 }, "js": { "preserve-newlines": true } }

Usar el ejemplo anterior tendría el siguiente resultado:

  • Archivos HTML
    • indent_size de 4 espacios de la configuración de nivel superior.
    • Los archivos también terminarían con una nueva línea.
    • JavaScript y CSS dentro de HTML
      • Heredar la configuración HTML end_with_newline
      • Anular su sangría a 2 espacios
  • Archivos CSS
    • indent_size configuración de nivel superior a un indent_size de indent_size de 1 espacio.
  • Archivos JavaScript
    • Heredar indent_size de 4 espacios de la configuración de nivel superior
    • Establezca preserve-newlines en true

CSS & HTML

Además del ejecutable js-beautify , css-beautify y html-beautify también se proporcionan como una interfaz fácil en esos scripts. Alternativamente, js-beautify --css o js-beautify --html lograrán lo mismo, respectivamente.

1 2 3 4 5 6
// Programmatic access var beautify_js = require('js-beautify'); // also available under "js" export var beautify_css = require('js-beautify').css; var beautify_html = require('js-beautify').html; // All methods accept two arguments, the string to be beautified, and an options object.

Los embellecedores CSS y HTML tienen un alcance mucho más simple y poseen muchas menos opciones.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
CSS Beautifier Options: -s, --indent-size Indentation size [4] -c, --indent-char Indentation character [" "] -t, --indent-with-tabs Indent with tabs, overrides -s and -c -e, --eol Character(s) to use as line terminators. (default newline - "\\n") -n, --end-with-newline End output with newline -L, --selector-separator-newline Add a newline between multiple selectors -N, --newline-between-rules Add a newline between CSS rules HTML Beautifier Options: -s, --indent-size Indentation size [4] -c, --indent-char Indentation character [" "] -t, --indent-with-tabs Indent with tabs, overrides -s and -c -e, --eol Character(s) to use as line terminators. (default newline - "\\n") -n, --end-with-newline End output with newline -p, --preserve-newlines Preserve existing line-breaks (--no-preserve-newlines disables) -m, --max-preserve-newlines Maximum number of line-breaks to be preserved in one chunk [10] -I, --indent-inner-html Indent <head> and <body> sections. Default is false. -b, --brace-style [collapse-preserve-inline|collapse|expand|end-expand|none] ["collapse"] -S, --indent-scripts [keep|separate|normal] ["normal"] -w, --wrap-line-length Maximum characters per line (0 disables) [250] -A, --wrap-attributes Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] ["auto"] -i, --wrap-attributes-indent-size Indent wrapped attributes to after N characters [indent-size] (ignored if wrap-attributes is "force-aligned") -U, --unformatted List of tags (defaults to inline) that should not be reformatted -T, --content_unformatted List of tags (defaults to pre) whose content should not be reformatted -E, --extra_liners List of tags (defaults to [head,body,/html] that should have an extra newline before them. --editorconfig Use EditorConfig to set up the options

Directivas para ignorar o preservar secciones (solo Javascript)

Embellecedor para directivas de soporte en los comentarios dentro del archivo. Esto le permite indicarle al conservador que conserve el formato o ignore completamente una parte del archivo. La entrada de ejemplo a continuación permanecerá cambiada después del embellecimiento

1 2 3 4 5 6 7 8 9 10 11 12 13 14
// Use preserve when the content is not javascript, but you don't want it reformatted. /* beautify preserve:start */ { browserName: 'internet explorer', platform: 'Windows 7', version: '8' } /* beautify preserve:end */ // Use ignore when the content is not parsable as javascript. var a = 1; /* beautify ignore:start */ {This is some strange{template language{using open-braces? /* beautify ignore:end */

Licencia

Puede usarlo de la forma que desee, en caso de que lo encuentre útil o le funcione, pero debe conservar el aviso de copyright y la licencia. (MIT)

Créditos

Gracias también a Jason Diamond, Patrick Hof, Nochum Sossonko, Andreas Schneider, Dave Vasilevsky, Vital Batmanov, Ron Baldwin, Gabriel Harrison, Chris J. Shull, Mathias Bynens, Vittorio Gambaletta y otros.

(README.md: js-beautify@1.7.5 )