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 lenguajes de programación interpretados o lenguajes de marcado sin cambiar su funcionalidad. Estos caracteres innecesarios por lo general incluyen caracteres en blanco el espacio , caracteres de nueva línea , comentarios , ya veces los 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, lo que hace 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 reducido es el propósito de las competiciones 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 minificada se puede interpretar inmediatamente sin la necesidad de un paso de descompresión: el mismo intérprete puede trabajar tanto con la fuente original como con la fuente minificada.

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 bonita impresora [ cita requerida ] o unminificador. Sin embargo, para lograr sus objetivos, la minificación a veces utiliza técnicas que también se utilizan por ofuscación ; por ejemplo, acortando los nombres de las variables y refactorizando el código fuente . Cuando la minificación usa tales técnicas, la impresora bonita o unminificador solo puede 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 eliminó 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 de origen es un formato de archivo que permite que las herramientas de software para JavaScript muestren un código diferente a un usuario que el código realmente ejecutado por la computadora. Por ejemplo, para ayudar en la depuración de código minificado, "mapeando" este código al código fuente original no minificado .

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]