Skip to content

Alfa do minificador Oxc


Temos o prazer de anunciar o primeiro release em alfa do oxc-minify.

Ainda faltam técnicas avançadas de minificação, mas esta versão já supera o esbuild em velocidade e no tamanho após gzip, conforme minification-benchmarks.

Comparativo de minificadores populares sobre typescript.js:

ArtefatoTamanho originalTamanho gzip
typescript v4.9.5 (Source)10,95 MB1,88 MB
MinificadorMinificadoMin+gzipTempo
@swc/core🏆-70% 3,32 MB🏆-54% 858,29 kB2 179 ms
oxc-minify-69% 3,35 MB-54% 860,67 kB🏆 444 ms
terser (no compress)-68% 3,53 MB-53% 879,30 kB14×6 433 ms
esbuild-68% 3,49 MB-51% 915,55 kB492 ms
terser ❌ Time-out--⚠️ +10 000 ms

Exemplo com 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);

Próximo release

oxc-minify será integrado ao Rolldown como minificador nativo, e o Rolldown deve virar o futuro do Vite.

Para nós é crítico:

  • continuar implementando técnicas avançadas, como inlining de constantes e eliminação de código morto;
  • fortalecer a infraestrutura de testes para nível produção.

Agradecimentos

Obrigado @sapphi-red pelas melhorias no minificador, sobretudo o algoritmo avançado de mangling de símbolos que o esbuild ainda não tem.