Skip to content

マンリング

Oxc ミニファイアは変数名およびプライベートクラスフィールドのマンリングをサポートしています。

この機能はデフォルトで有効化されており、mangle オプションを false に設定することで無効化できます。

ルートレベルの変数

ルートレベルの変数は、モジュール以外のコードではデフォルトではマンリングされません。mangle.toplevel オプションを true に設定することで、ルートレベルの変数に対するマンリングを有効化できます。

js
// 入力
var foo = 1;

// 出力
var e = 1;
js
// 例
import { minify } from "oxc-minify";

const result = await minify("lib.js", code, {
  module: false, // モジュール外のコード
  compress: {
    mangle: {
      toplevel: true,
    },
  },
});

name プロパティ値の保持

変数名のマンリングは、関数やクラスの name プロパティ値を変更する可能性があります。mangle.keepNames オプションを有効化することで、元の name プロパティ値を保持できます。

js
// 入力
var foo = function () {};

// 出力
var foo = function () {};
js
// 例
import { minify } from "oxc-minify";

const result = await minify("lib.js", code, {
  compress: {
    mangle: {
      keepNames: true, // { function: true, class: true } の省略形
    },
  },
});

compress.keepNames オプション

このオプションを有効にする場合、compress.keepNames オプション を併用することも検討してください。

マンラーアウトプットのデバッグ

マンラーのデバッグを行うには、mangle.debug オプションを有効化できます。このオプションが有効になると、マンラーは変数名として slot_0slot_1、… を使用します。

js
// 入力
var foo = 1;

// 出力
var slot_0 = 1;
js
// 例
import { minify } from "oxc-minify";

const result = await minify("lib.js", code, {
  compress: {
    mangle: {
      debug: true,
    },
  },
});