一个vue3项目,计划在打包项目的时候,去除modulepreload优化。参照官方文档,配置modulePreload 禁用。
build:{
modulePreload: false,
...
}
打包,将代码发到服务器上以后,页面显示就不正常了。在网络里看, CSS文件都没有加载出来。一开始,我以为是因为其他地方引起的这个CSS未加载,没有怀疑到是vite的问题。
在想不通其他可能性之后,又在网上搜了一下vite 去除 modulePreload导致CSS无法正确加载,找到了答案。
vite 动态引入 css 和 modulepreload 用的是同一个方法,估计这也是为啥关闭 modulePreload 之后样式丢失的原因
解决方法就是只配置对js文件移除modulePreload
具体配置如下:
build: {
modulePreload: { resolveDependencies(filename, deps) { return deps.filter(dep => !dep.endsWith('.js')) } }, ...
}
按这样配置之后,再打包,页面就正常显示了。
目前,vite有关这个问题的issue还是处于Open状态,官方还没有彻底解决这个问题。
参考资料