Minificación (programación)


La minificación (también minimización o minimización ) es el proceso de eliminar todos los caracteres innecesarios del código fuente de los lenguajes de programación interpretados o lenguajes de marcado sin cambiar su funcionalidad. Estos caracteres innecesarios suelen incluir espacios en blanco, caracteres de nueva línea , comentarios y, a veces , delimitadores de bloque ., que se utilizan para agregar legibilidad al código pero no son necesarios para que se ejecute. La minificación reduce el tamaño del código fuente, haciendo que su transmisión a través de una red (por ejemplo, Internet) sea más eficiente. En la cultura de los programadores, apuntar a un código fuente extremadamente minimizado es el propósito de las competencias de golf de código recreativo .

La minificación se puede distinguir del concepto más general de compresión de datos en que la fuente minimizada se puede interpretar inmediatamente sin necesidad de un paso de descompresión: el mismo intérprete puede trabajar tanto con la fuente original como con la fuente minimizada.

Los objetivos de la minificación no son los mismos que los de la ofuscación ; el primero a menudo está destinado a revertirse utilizando una impresora bonita [ cita requerida ] o unminificador. Sin embargo, para lograr sus objetivos, la minificación a veces utiliza técnicas que también utiliza la ofuscación ; por ejemplo, acortar nombres de variables y refactorizar el código fuente . Cuando la minificación usa tales técnicas, la impresora bonita o el desminificador solo pueden revertir completamente el proceso de minificación si se le proporcionan detalles de las transformaciones realizadas por tales técnicas. Si no se proporcionan esos detalles, el código fuente invertidocontendrá diferentes nombres de variables y flujo de control, aunque tendrá la misma funcionalidad que el código fuente original .

En 2001 , Douglas Crockford introdujo JSMin, [1] que eliminaba los comentarios y los espacios en blanco del código JavaScript. [2] Le siguió YUI Compressor en 2007. [2] En 2009, Google abrió su kit de herramientas Closure, incluido Closure Compiler, que contenía una función de mapeo de fuentes junto con una extensión de Firefox llamada Closure Inspector. [3] En 2010, Mihai Bazon presentó UglifyJS, que fue reemplazado por UglifyJS2 en 2012; la reescritura fue para permitir el soporte del mapa fuente. [4] A partir de 2017, Alex Lam se hizo cargo del mantenimiento y desarrollo de UglifyJS2, reemplazándolo con UglifyJS3, que unificó la CLI con la API. [5]

Un mapa fuente es un formato de archivo que permite que las herramientas de software para JavaScript muestren un código diferente al usuario que el código realmente ejecutado por la computadora. Por ejemplo, para ayudar en la depuración de código minimizado, "asignando" este código al código fuente original no minimizado .

El formato original fue creado por Joseph Schorr como parte del proyecto de minificación Closure Inspector. [6] Las versiones 2 y 3 del formato redujeron considerablemente el tamaño de los archivos de mapas. [6]