如何通过Vite的dropLabels选项排除特定代码行?
问题:Vite中esbuild的Drop Labels选项无法移除带指定标签的调试代码
我在用Vite打包Vue.js应用时,注意到esbuild有个「Drop Labels」选项,本想用来从生产包中排除带特定标签的调试代码。示例代码如下:
DEV: console.log('This should only show in development.');
我在vite.config.js里做了如下配置:
export default defineConfig({ ... esbuild: { dropLabels: ['DEV'], } })
这个选项确实被识别了(因为如果传字符串而非数组会报错),但打包产物里依然能看到那行console.log。有意思的是,当我同时启用drop选项后:
esbuild: { drop: ['console'], dropLabels: ['DEV'], }
那行console.log终于消失了,但我不想移除所有console.log,只想删掉带DEV:标签的那些。会不会是DEV:标签在传到esbuild之前就被其他优化工具剥离了?
复现步骤
- 项目代码中加入带
DEV:标签的调试语句 - 配置vite.config.js的esbuild选项仅开启
dropLabels: ['DEV'] - 执行
npm run build && cat dist/assets/index*.js查看生产打包后的JS文件,可见目标console.log未被移除 - 若添加
drop: ['console']配置,目标console.log会被移除,但所有console语句都会被清理
内容的提问来源于stack exchange,提问作者Simon E.
相关产品推荐
相关产品推荐

