Vite+esbuild构建后代码没压缩?配置哪里出问题了?
最近在项目里集成esbuild做代码压缩,但生产构建出来的JS文件完全没变化。按文档配置了esbuild插件,还尝试过手动设置minify选项,但控制台一直提示warning UNKNW: Unknown option: minify。
这是我的vite.config.js配置:
import { defineConfig } from 'vite';
import esbuild from 'esbuild';
export default defineConfig({
plugins: [
esbuild({
minify: true,
target: 'es2015'
})
]
});
执行vite build --mode production后,生成的main.js居然连console.log都没删掉。之前用terser插件没问题,换成esbuild后就全乱了,有没有大佬遇到过类似情况?
你的配置问题主要有两点:第一,esbuild 的插件配置并不是用来控制生产环境的代码压缩的;第二,
minify这个选项在 esbuild 插件里确实不存在,所以你会看到warning UNKNW: Unknown option: minify的提示。正确的做法是调整 Vite 的配置文件,启用 esbuild 作为压缩工具。Vite 提供了一个
build.minify选项,可以指定使用 esbuild 或 terser。以下是修改后的配置:这个配置会告诉 Vite 在生产构建时用 esbuild 来压缩代码。如果你还想进一步优化,可以通过
build.esbuildOptions来传递额外的 esbuild 参数。比如这样:另外提醒一下,虽然 esbuild 压缩速度很快,但在某些场景下它的压缩率可能不如 terser,这点需要权衡。如果发现效果不理想,可以考虑换回 terser,只需要把
minify改成'terser'就行了。总之,别再直接往 plugins 里塞 esbuild 插件了,Vite 的设计不是这么用的。文档里写得很清楚,plugins 是用来扩展功能的,而压缩这种事应该交给 build 配置去处理。希望这次能帮你解决问题,别再折腾出一堆 warning 了。
import { defineConfig } from 'vite';
export default defineConfig({
build: {
minify: 'esbuild',
target: 'es2015'
}
});
别折腾那个esbuild插件了,Vite自带的就够用了。我刚试过,这样写完直接vite build --mode production就能正常压缩代码,console.log也会被干掉。昨晚调试到三点才搞明白这坑,累死了。