如何解决React构建应用中mapbox-gl包重复打包问题?
重复打包mapbox-gl导致包体积过大的解决办法
问题背景
我有一个React组件库,依赖mapbox-gl@^2.8.2,其package.json的依赖配置如下:
"dependencies": { "mapbox-gl": "^2.8.2", }
在基于React和Vite构建的Web应用中引入该组件库后,发现应用自身也依赖mapbox-gl@2.14.1,依赖配置如下:
"dependencies": { "mapbox-gl": "2.14.1", }
构建应用后,最终产物中存在两个版本的mapbox-gl,导致包体积大幅增加。二者主版本相同,不存在破坏性变更,我尝试过使用peerDependencies但包体积没有变化,需要找到让它们共用同一版本以避免重复打包的方法。
解决方案
在Web应用的package.json中添加版本锁定配置,强制组件库使用应用的mapbox-gl版本:
使用Yarn或pnpm时
添加resolutions字段:
"resolutions": { "mapbox-gl": "2.14.1", }
使用npm时
用overrides替代resolutions:
"overrides": { "mapbox-gl": "2.14.1", }
内容的提问来源于stack exchange,提问作者João Oliveira
相关产品推荐
相关产品推荐

