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:
| Artefato | Tamanho original | Tamanho gzip | |
|---|---|---|---|
| typescript v4.9.5 (Source) | 10,95 MB | 1,88 MB | |
| Minificador | Minificado | Min+gzip | Tempo |
| @swc/core | 🏆-70% 3,32 MB | 🏆-54% 858,29 kB | 5×2 179 ms |
| oxc-minify | -69% 3,35 MB | -54% 860,67 kB | 🏆 444 ms |
| terser (no compress) | -68% 3,53 MB | -53% 879,30 kB | 14×6 433 ms |
| esbuild | -68% 3,49 MB | -51% 915,55 kB | 1×492 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.
