実行環境の互換性
targetは実際の実行環境に合わせます。BrowserとNodeのビルドでは防御が異なる場合があり、BrowserターゲットはNodeの代用にはなりません。環境宣言、ドメイン制限、実行ツールも設定と一致させてください。
target
browser- Chrome, Firefox, Safari, Edge.browser-no-eval-browserと同じですが、出力はeval()を使用しません。対象ページの Content Security Policy がeval/unsafe-evalを禁止している場合に使用します。node- Node.js 環境。ブラウザ固有のオプションは無効になります(window/documentを必要とし、Node では何もしないか例外を投げるため)。ブラウザ専用 API に依存する一部のvmSelfDefending防御(ヘッドレスブラウザ検知、iframe を用いたクリーンレルム復元、インスペクタ / DOM チェック対策)は、このターゲットでは出力されません。service-worker- Service Worker のコンテキスト。windowもdocumentもなく、selfグローバルが異なります。userscript- ユーザースクリプトマネージャのサンドボックス(例: Tampermonkey)。vmSelfDefendingの防御はそれに応じて調整されます。難読化ツール v6.9.0 以降が必要です。bytenode- bytenode で.jscにコンパイルされるコード向け。難読化ツール v6.13.0 以降が必要です。
JavaScript
難読化によって関数名や関数のソース表現が変わることがあります。.nameや.toString()を安定したアプリデータとして使わず、明示的な識別子を使用してください。公開グローバル名は設定によって残る場合があります。
strictMode
strictMode: nullとstrictMode: falseも明示的なディレクティブ、ESモジュール、クラスメソッドをstrictとして認識します。strictMode: trueはすべての入力をstrictとして扱います。最終環境に合わせてください。難読化後にバンドラーがstrict modeを追加すると動作が変わる場合があります。
CLI / API
最終的な難読化の前にTypeScriptやJSXをコンパイルし、アプリをバンドルしてください。VM選択コメントは難読化まで保持します。Self Defendingを適用した出力を後から圧縮、整形、変更しないでください。VMおよびHTML難読化ではソースマップを使用できません。 エージェント、自動化ツール、デバッガーを使用する機能テストについては、テストとCIを参照してください。
