Estoy trabajando en un script de un solo archivo que debe incluirse en las páginas a través de una etiqueta <script> , se está construyendo con Vite.js usando el minificador Terser.
Después de hacer cambios, noté que la versión construida de mi secuencia de comandos de repente arrojaba errores cada vez que llamaba al código de Google Analytics.
Después de investigar un poco, noté que uno de los otros paquetes en un sitio en el que estaba incluyendo el script estaba llamando a una función llamada ga() . El error ocurre porque Terser está minificando/destruyendo una función en mi secuencia de comandos y la nombra ga() , que luego entra en conflicto con esta otra función sobre la que no tengo control.
Supuse que Terser tendría la opción de
Pero parece que tampoco lo tiene.
Logré solucionar el problema agregando lo siguiente a mi configuración:
minify: "terser", terserOptions: { keep_fnames: true, },Lo que evita que Terser manipule CUALQUIER nombre de función, pero obviamente esto no es bueno, ya que está desperdiciando un montón de potencial para la minificación.
¿Hay alguna manera de decirle a Terser que manipule todas las funciones, pero que lo haga al mismo tiempo que lo prefija con a_ , por ejemplo?
Sí, puede hacerlo con expresiones regulares. Puede consultar esta publicación o ir a mangle.properties para obtener la documentación completa.
terserOptions: { mangle: { properties: { regex: /(^P1|^p1|^_p1)[AZ]\w*/ } } }