ドキュメント
/

実行環境の互換性

実行環境の互換性

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 のコンテキスト。windowdocument もなく、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を参照してください。