Formateador y minificador de JavaScript
JavaScript Beautifier & Minifier
Quita comentarios y espacios de JavaScript o TypeScript sin renombrar nada, y vuelve a indentar un paquete minificado para poder leerlo.
Embellece JavaScript o TypeScript minificado para que puedas leerlo, y quita comentarios y espacios cuando lo quieres más pequeño. Está construido sobre un tokenizador en lugar de un parser, y esa frontera es lo honesto de la herramienta: nada se renombra, ninguna expresión se reescribe y nada dentro de una cadena, un template o una regex se toca.
JavaScript · TypeScript de entrada
Suelta un archivo .js o .ts
Se lee solo en esta pestaña. No se sube nada.
Formateado
Tokens
109
Líneas
18
Con franqueza: esto es un tokenizador, no un analizador sintáctico
- · El tokenizador distingue con exactitud los literales de expresión regular de la división, sabe qué hacer con
${ {a:1}.a }dentro de una plantilla literal y reconoce un // dentro de una cadena. Así que no se toca nada que esté dentro de una cadena, una plantilla o una expresión regular. - · Minificar quita solo comentarios y espacios en blanco. No renombra nada ni reescribe ninguna expresión, y conserva los saltos de línea de los que depende la inserción automática de punto y coma: después de
return, antes de un ++ postfijo y allí donde la línea siguiente empieza por ( o [. No llegará a ser tan pequeño como con Terser, y tampoco cambiará el comportamiento. - · Formatear encuentra los límites de las sentencias por la profundidad de llaves y corchetes y por los ;, vuelve a sangrar y deja los saltos de línea que ya estaban. No inserta puntos y comas, no parte las líneas largas y no sabe distinguir un literal de objeto de un bloque, así que en ambos casos pone una entrada por línea.
- · Los genéricos de TypeScript como
Map<string, T>y una comparación comoa < bse distinguen mirando los tokens de alrededor. JSX no se maneja. - · Suficiente para dejar legible un bundle ofuscado; para el código que estás a punto de subir, la herramienta correcta es Prettier.
Para encontrar la posición original detrás de una traza de pila minificada, usa Resolver un stack trace con su source map.
Cómo se usa
Pega el código o suelta un archivo
Un bundle de una sola línea, un archivo con indentación mezclada, TypeScript con genéricos: todo se lee de la misma manera. El archivo se lee en esta pestaña.
Elige Formatear o Minificar
Formatear reindenta por profundidad de llaves y deja en paz tus saltos de línea existentes. Minificar elimina comentarios y espacios y nada más, conservando las cabeceras de licencia `/*!` si se lo pides.
Vigila la comprobación del flujo de tokens
Los tokens significativos de la salida se comparan con la entrada en cada ejecución. Si alguna vez difieren, la página lo dice en rojo y te indica que uses tu entrada en su lugar: el único modo de fallo que nunca debe ser silencioso.
Preguntas frecuentes
¿Por qué mi archivo minificado sigue siendo más grande que el de Terser?
Porque esto solo elimina comentarios y espacios. Terser analiza el programa y puede renombrar variables locales, plegar constantes y eliminar ramas muertas; eso requiere un AST y un análisis de ámbitos, y equivocarse sutilmente en cualquiera de los dos cambia el comportamiento. El trato aquí es un ahorro menor que no puede romper tu código.
¿Minificar romperá la inserción automática de punto y coma?
No: se conservan los saltos de línea de los que depende la ASI: después de un `return`, antes de un `++` postfijo, y donde la siguiente línea empieza por `(` o `[`. Esos son precisamente los sitios donde quitar un salto de línea cambia lo que hace el programa.
¿Por qué mi literal de objeto sale con una propiedad por línea?
Porque un tokenizador no puede distinguir un literal de objeto de un bloque: ambos son `{`. Todo lo que está a profundidad de llaves recibe el mismo tratamiento. Un parser sabría la diferencia; esto deliberadamente no lo es.
¿Maneja JSX?
No. JSX necesita el parser que esto no tiene: `<Foo>` es indistinguible de una comparación a nivel de tokens, y la heurística de genéricos que se las arregla con `Map<string, T>` ya está en el límite de lo que se puede adivinar. Usa Prettier para un archivo `.tsx`.
¿Puedo usar esto en lugar de Prettier?
Para leer un bundle ofuscado, sí: para eso está. Para código que estás a punto de confirmar, no: no inserta puntos y coma, no ajusta líneas largas y no tiene opinión sobre las listas de argumentos. Prettier reimprime desde un AST, y por eso puede.
Puede recibir de
Formateador y minificador de HTML
HTML Beautifier & Minifier
Formatea o minifica HTML preservando los elementos en línea, con opción de colapsar los espacios en blanco.
Formateador y minificador de CSS
CSS Beautifier & Minifier
Formatea o minifica CSS sin reordenar nada, conservando exactamente el flujo de tokens.
Resolver un stack trace con su source map
Source Map Resolver
Devuelve una traza de pila minificada a sus archivos y líneas originales usando el source map que le entregues.
Inspector de WebAssembly
WebAssembly Inspector
Enumera las importaciones, exportaciones, memoria y tamaños de sección de un módulo .wasm e imprime su formato de texto.
Después
Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.
Captura de código como imagen
Code Screenshot
Convierte un fragmento de código en una imagen con resaltado de sintaxis, marco de ventana y el tema que elijas.
Formateador y minificador de CSS
CSS Beautifier & Minifier
Formatea o minifica CSS sin reordenar nada, conservando exactamente el flujo de tokens.
Formateador y minificador de HTML
HTML Beautifier & Minifier
Formatea o minifica HTML preservando los elementos en línea, con opción de colapsar los espacios en blanco.
Resolver un stack trace con su source map
Source Map Resolver
Devuelve una traza de pila minificada a sus archivos y líneas originales usando el source map que le entregues.
Codificador y decodificador Base64
Base64 Encoder & Decoder
Codifica y decodifica Base64 y Base64URL, para texto o archivos, tratando UTF-8 correctamente.
curl a código
curl to Code
Convierte un comando curl en fetch, axios, requests de Python, Go, PHP o PowerShell.