マンリング
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_0、slot_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,
},
},
});