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,
    },
  },
});