92 - 《Bigfish 4 特性 04:build 阶段的构建提速》

发布于 2022年4月6日

4 月会更新 20 篇 Bigfish 4(含 Umi 4)的新特性,这是第四篇。

构建提速不只是 dev 阶段的 MFSU,还要考虑流程上 build 阶段的构建。build 阶段的构建相比 dev 阶段,会做很多额外的事,比如 js 压缩和 css 压缩、tree-shaking、code-splitting,同时对于依赖编译和缓存的利用方式也会不同。所以优化手段也会大不同。

esbuild

虽然构建提速没有银弹,但 esbuild 是这个时期的大杀器。

JS 压缩之前默认是 terser,Bigfish 4 之后默认是 esbuild。原因在《彻底告别编译 OOM,用 esbuild 做压缩器》有过介绍,除了快,还可彻底解压缩导致的 OOM 问题,缺点是相比 terser 尺寸会增加 10%。同时压缩方式还支持 terser、uglifyJs、swc,支持不同场景,比如针对不支持 es6 的场景,选 uglifyJs 可以在遇到高级语法时主动抛错。

export default {
 jsMinifier: 'uglifyJs',
 jsMinifierOptions: {},
}

CSS 压缩之前默认是 cssnano,Bigfish 4 之后默认也是 esbuild。相比 cssnano,用 esbuild 压缩 CSS 速度提升 6 倍,而尺寸仅增加约 1%。同时也可通过配置切换回 cssnano,以及尝试我们试验性支持的 parcelCSS。

export default {
 cssMinifier: 'parcelCSS',
 cssMinifierOptio

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。