Skip to content

Альфа минификатора Oxc


Мы рады объявить об альфа-релизе oxc-minify.

Пока не хватает некоторых продвинутых техник минификации, текущая версия уже превосходит esbuild по скорости и размеру после сжатия, что показывает minification-benchmarks.

Сравнение популярных минификаторов на typescript.js:

ArtifactOriginal sizeGzip size
typescript v4.9.5 (Source)10.95 MB1.88 MB
MinifierMinified sizeMinzipped sizeTime
@swc/core🏆-70% 3.32 MB🏆-54% 858.29 kB5x2,179 ms
oxc-minify-69% 3.35 MB-54% 860.67 kB🏆 444 ms
terser (no compress)-68% 3.53 MB-53% 879.30 kB14x6,433 ms
esbuild-68% 3.49 MB-51% 915.55 kB1x492 ms
terser ❌ Timed out--⚠️ +10,000 ms

Пример использования oxc-minify

typescript
import { minify } from "oxc-minify";

const filename = "test.js";
const code = "const x = 'a' + 'b'; console.log(x);";
const options = {
  compress: {
    target: "esnext",
  },
  mangle: {
    toplevel: false,
  },
  codegen: {
    removeWhitespace: true,
  },
  sourcemap: true,
};
const result = minify(filename, code, options);

console.log(result.code);
console.log(result.map);

Следующий релиз

oxc-minify интегрируется в Rolldown как встроенный минификатор, а Rolldown должен стать будущим Vite.

Поэтому для нас критично:

  • продолжать реализовывать продвинутые техники минификации, например инлайнинг констант и удаление мёртвого кода;
  • укреплять и расширять тестовую инфраструктуру для продакшен-готовности.

Благодарности

Спасибо @sapphi-red за улучшения минификатора, в частности за продвинутый алгоритм минификации символов, которого не хватает в esbuild.