Compatibilidad de ejecución
Elige target según el entorno real. Las compilaciones Browser y Node pueden contener defensas diferentes; un target Browser no sustituye a Node.
target
browser: Chrome, Firefox, Safari, Edge.browser-no-eval: igual quebrowser, pero la salida no usaeval(). Úsalo cuando la página de destino tenga una Content Security Policy que prohíbaeval/unsafe-eval.node: entorno Node.js. Las opciones específicas del navegador se desactivan (requierenwindow/documenty en Node no harían nada o lanzarían una excepción). Algunas defensas devmSelfDefendingque dependen de API exclusivas del navegador (detección de navegadores headless, recuperación de un realm limpio mediante iframe, comprobaciones antiinspector y del DOM) no se emiten para este target.service-worker: contexto de Service Worker. Sinwindow, sindocumenty con un globalselfdiferente.userscript: sandbox de un gestor de userscripts (p. ej., Tampermonkey). Las defensas devmSelfDefendingse ajustan en consecuencia. Requiere la ofuscación VM (o Parse HTML) y el ofuscador v6.9.0+.bytenode: para código que se compilará a.jsccon bytenode. Requiere la ofuscación VM (o Parse HTML) y el ofuscador v6.13.0+.
Entorno del navegador y dominios
Las declaraciones sobre dónde se ejecuta el código deben coincidir con el despliegue real. browserEnvironment debe describir cómo se sirve realmente la compilación (consulta Browser Environment), y VM Domain Lock debe incluir todos los dominios que lo sirven (consulta VM Domain Lock). La automatización y los depuradores pueden activar las defensas avanzadas; consulta Pruebas y CI.
JavaScript
Los nombres de las funciones y su código fuente pueden cambiar con la ofuscación. No uses .name ni .toString() como datos estables de la aplicación; usa identificadores explícitos en su lugar. Las variables globales públicas pueden seguir siendo visibles cuando tu configuración lo requiera.
strictMode
strictMode: null y strictMode: false siguen reconociendo como estrictos las directivas explícitas, los módulos ES y los métodos de clase. strictMode: true trata toda la entrada como estricta. Haz que coincida con el contexto de ejecución final; un bundler que añada el modo estricto después de la ofuscación puede cambiar el comportamiento.
Pipeline de compilación
Compila TypeScript o JSX y empaqueta tu aplicación antes del paso final de ofuscación. Conserva los comentarios /* javascript-obfuscator:vm */ durante esa compilación para que el modo comment pueda seguir encontrándolos. No minifiques, formatees ni reescribas de ninguna otra forma la salida con Self Defending o VM Self Defending después. Los source maps no están disponibles para la ofuscación VM ni para la de HTML.
