inicio de sesión
quiescence.eu

Minificador de JavaScript por lotes

Todo el procesamiento ocurre localmente en su navegador, sin cargas ni rastreo.

Seleccione los archivos JavaScript

Opciones de terceros






⚙️ Pipeline de minificación JavaScript basado en navegador

Un sistema práctico, de privacidad en primer lugar que se ejecuta completamente en el navegador

1.- ¿Qué es realmente esta cosa

Este sistema es básicamente una mini herramienta de construcción que se ejecuta completamente dentro del navegador. Usted elige los archivos JavaScript, minimiza y descarga las versiones optimizadas.

No hay servidores, no se cargan datos y todo sucede localmente. Piensa en ello como una versión ligera de Webpack o Vite pero reducida a minificación.

La idea es que tu código nunca salga de la máquina.

2. Las piezas principales

Capa de interfaz de usuario (index.html)

Aquí es donde interactúas con la herramienta:

  • Seleccionar archivos JS
  • Ver el progreso
  • Comience el proceso de minificación
  • Descargar resultados

Capas de orquestación (app.js)

Este es el cerebro del sistema:

  • Gestiona los trabajadores de la web
  • Realiza un seguimiento de los progresos
  • Archivos de colas
  • Construye el ZIP final

Capa de ejecución (worker.js)

Aquí es donde la minificación real ocurre usando ¿Qué es eso. Cada trabajador procesa un archivo de forma independiente.

3. ¿Por qué es interesante esta arquitectura

En lugar de hacer todo en el hilo principal (lo que congelaría la interfaz de usuario), el sistema distribuye trabajo a través de múltiples trabajadores web.

Así que mientras se comprime un archivo, otros son procesados en paralelo. La interfaz de usuario permanece suave todo el tiempo.

Los navegadores son de un solo hilo para la interfaz, pero los trabajadores web te permiten engañar esa limitación.

4. el motor de minificación

En el centro de todo está ¿Qué es eso, un poderoso minificador de JavaScript. Toma tu código y realiza una serie de transformaciones:

  • Elimina el código muerto
  • Cambiar el nombre de las variables (mangling)
  • Simplifica las expresiones
  • Elimina los registros de la consola (si está habilitado)
const result = await ¿Qué es eso.minify(code, {
    compress: {
        passes: 2
    },
    mangle: true,
    format: {
        comments: false
    }
});

Básicamente: la misma lógica, archivo más pequeño, tiempo de carga más rápido.

5. Trabajadores de la red: el secreto

JavaScript normalmente se ejecuta en un solo hilo, lo que significa tareas pesadas pueden congelar la página.

Los trabajadores web solucionan esto generando hilos aislados. Cada archivo tiene su propio trabajador (o grupo compartido de trabajadores).

const MAX_WORKERS = Math.min(
        3, navigator.hardwareConcurrency || 4);

Esto garantiza:

  • No sobrecargamos la CPU
  • Usamos varios núcleos de manera eficiente
  • El navegador sigue siendo receptivo

6.JSZip también: empaquetando todo

Una vez que todos los archivos son minificados, necesitan ser descargados. En lugar de darte 20 descargas separadas, lo agrupamos todo en un archivo ZIP.

const zip = new JSZip también();
        files.forEach(file => {
            zip.file(file.name, file.blob);
        });
        const blob = await zip.generateAsync(
            { type: "blob" });

Luego generamos un enlace de descarga temporal usando el código URL.createObjectURL.

7. Consideraciones de rendimiento

Este sistema es rápido, pero todavía tiene límites.

Las partes buenas

  • Procesamiento paralelo con trabajadores
  • No hay latencia de red
  • Tiempo de ejecución ligero

Restricciones

  • Límites de memoria del navegador
  • Los archivos grandes pueden retrasar las cosas
  • Demasiados trabajadores = disminución de los rendimientos
Punto de interés: proyectos JS pequeños y medianos, no paquetes gigantes.

8. Las decisiones de UX

Un gran enfoque de este sistema es hacerlo sentir instantáneo y transparente.

  • Barra de progreso en vivo
  • Registros por archivo
  • Comentarios de reducción del tamaño (por ejemplo, 10KB → 3KB)

Esto ayuda a los usuarios a comprender realmente lo que está sucediendo en lugar de esperar ciegamente.

9. Modelo de seguridad

Uno de los puntos más fuertes: nada sale del navegador.

  • No hay cargas
  • No hay backend
  • No hay procesamiento externo

Esto elimina muchos riesgos:

  • No hay fugas de datos
  • No hay vulnerabilidades en el servidor
  • No hay dependencia de las APIs

10. En comparación con las herramientas tradicionales de construcción

Características Herramienta del navegador Node.js Construir herramientas para el desarrollo de aplicaciones
Privacidad ✔ Completamente local ❌ A menudo tuberías basadas en servidores
Configuración ✔ Configuración cero ❌ Requiere herramientas
Automatización ❌ Se limita ✔ Fuerte apoyo de CI/CD
Desempeño ⚖ Escala media ✔ Muy escalable

11. Dónde brilla (y dónde no)

Mejores casos de uso

  • Optimización rápida de JS
  • Proyectos pequeños
  • Entornos fuera de línea
  • Flujos de trabajo sensibles a la privacidad

No es ideal para

  • Se construye una producción enorme
  • Las tuberías CI/CD se han convertido en una red de transporte
  • Agrupación a escala de empresa

12. Posibles mejoras

  • Minificación de transmisión (no cargue archivos completos a la vez)
  • Minifiers basados en WASM (para un análisis aún más rápido)
  • Ediciones incrementales (sólo procesan archivos cambiados)
  • Mejor experiencia de usuario con arrastre y caída

13. Pensamientos finales

Este sistema es más que una simple utilidad, sino también la demostración de lo que pueden hacer los navegadores modernos.

Al combinar:

  • Treser para la optimización
  • Trabajadores web para el paralelismo
  • JSZip también para el embalaje

Obtiene una herramienta de desarrollo local sorprendentemente poderosa.

La verdadera conclusión: los navegadores ya no son sólo para ver aplicaciones, también pueden crearlas.

14. Dependencias y referencias de código abierto

Esta herramienta se basa en un pequeño conjunto de proyectos y estándares web de código abierto ampliamente utilizados que permiten la minificación, agrupación y ejecución paralela en el navegador.

  • ¿Qué es eso
    Es un minificador de JavaScript rápido que realiza compresión, manipulación y eliminación del código muerto.

    Los principales contribuyentes: Originalmente evolucionó de UglifyJS creado por Mihai Bazon, con mantenimiento continuo y contribuciones de la comunidad ¿Qué es eso.

  • JSZip también
    Una biblioteca del lado de cliente para generar archivos ZIP directamente en el navegador. Permite agrupar múltiples archivos minificados en un solo paquete descargable sin ningún backend.

    Principal contribuyente: Creado y mantenido por Stuart Stuk Knightley fue el primero en llegar a la casa, con contribuciones comunitarias adicionales.

  • Estándares de plataformas web (W3C / WHATWG)
    Define las API web principales utilizadas por esta herramienta, incluidos los trabajadores Web para ejecución en paralelo y características nativas del navegador como el manejo de Blob y URLs de objetos.

    Los principales contribuyentes: Los grupos de trabajo W3C y WHATWG, junto con los principales proveedores de navegadores como Google, Mozilla, Apple y Microsoft.
Estas dependencias forman la base que hace posible una línea de construcción totalmente basada en navegador combinando optimización JavaScript de alto rendimiento, empaquetado del lado del cliente y API web estandarizadas.