vite 项目:改变了一个文件的内容,两次打包后的对比 hash 都变了,导致每次打包后资源都不存在,需要手动刷新。不知如何解决?

两次打包改变一个字
打包后的 js 的 hash 都会变, webpack 是不会变的
网上搜是 contenthash, 那 vite 应该如何才能根 webpack一样呢?

vite 项目:改变了一个文件的内容,两次打包后的对比 hash 都变了,导致每次打包后资源都不存在,需要手动刷新。不知如何解决?


回答:

vite 打包是使用的 rollup,所以应该去翻阅 rollup 的文档去看 hash 具体是怎么产生的。大概在文档这部分。能了解到的是只有一种 hash 模式,所以视情况指定一下 build.rollupOptions 部分的 output 配置规则手动hack一下。


多半是 rollup 打包规则的一个问题,除了 hacky 的方式,好像还没有一个非常可行的解决方案。
rollup 仓库里面看到同样的反馈。vite 仓库里也看到了类似的反馈。里面把情况说明的很详细了。


回答:

hash 是通过文件内容算出来的,所以一定是文件内容变了,hash 才变,无论 webpack 还是 vite,都是一样。

所以你可以想办法把出现变化的文件单独打包,使得其它文件 hash 不要变。

但是回到你的问题,我又有点糊涂。是说因为打包后 hash 变了,原本的 html 请求不到老的 js 么?那你应该减少 html 的缓存才对,每次加载新的就好了。或者不要清理旧的 js。

以上是 vite 项目:改变了一个文件的内容,两次打包后的对比 hash 都变了,导致每次打包后资源都不存在,需要手动刷新。不知如何解决? 的全部内容, 来源链接: utcz.com/p/932853.html

回到顶部