Compatibilidade com o modo estrito
A ofuscação VM precisa saber, em tempo de compilação, se o código roda em modo estrito. Se o seu código depende do comportamento do modo estrito, você precisa declará-lo explicitamente.
Por quê? A VM compila seu código em bytecode antes da execução. Ela precisa conhecer o contexto de modo estrito durante
a compilação para gerar o bytecode correto para comportamentos específicos do modo estrito (por exemplo, o vínculo de this, parâmetros
duplicados e o comportamento do objeto arguments).
A opção strictMode controla como o ofuscador decide. Com strictMode: null (padrão) e strictMode: false, o código é tratado como estrito apenas onde ele o declara: uma diretiva 'use strict'; explícita, sintaxe de módulo ES ou métodos de classe. Todo o resto é compilado em modo não estrito (sloppy mode). strictMode: true trata toda a entrada como estrita. Corresponda ao contexto em que o bundle final realmente roda.
Modo estrito no nível do arquivo
Adicione 'use strict'; no início do arquivo para ativar o modo estrito em todo o código:
Modo estrito no nível da função
Adicione 'use strict'; dentro de funções específicas se apenas algumas funções precisarem do modo estrito:
Problema comum: se o seu bundler ou ferramenta de build adiciona 'use strict'; automaticamente (por exemplo, um bundler que envolve
código-fonte CommonJS ou de script simples em uma saída em modo estrito), mas você ofusca o código-fonte antes de empacotá-lo, a VM não vai saber do modo estrito. Adicione a diretiva
aos seus arquivos-fonte, defina strictMode: true ou ofusque depois de empacotar.
