首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在vue3中强制vite清除缓存

如何在vue3中强制vite清除缓存
EN

Stack Overflow用户
提问于 2021-06-19 11:35:16
回答 2查看 16.9K关注 0票数 4

我有一个附带项目,Vue.js 3vite作为我的绑定器。

在每个构建之后,绑定的文件从前面的构建中获得相同的散列,例如:

代码语言:javascript
运行
复制
index.432c7f2f.js   <-- the hash will be identical after each new build
index.877e2b8d.css
vendor.67f46a28.js

因此,每次新构建之后(文件上有相同的哈希),我不得不重新加载浏览器,很难清除缓存并查看我所做的更改。

我在package.json中尝试了package.json,但是:

  1. 它在Vite/Rollup环境中不工作,
  2. 每次更改后手工输入一个新数字都是没有意义的。

问题:

是否有任何方法配置vite以在新构建后随机创建新哈希,或者您知道清除缓存的另一个技巧吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-24 22:12:33

我找到了一种解决方案,如何使用构建过程对每个文件添加一个随机散列,它将清除浏览器中的缓存:

代码语言:javascript
运行
复制
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { hash } from './src/utils/functions.js'

export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      output: {
        entryFileNames: `[name]` + hash + `.js`,
        chunkFileNames: `[name]` + hash + `.js`,
        assetFileNames: `[name]` + hash + `.[ext]`
      }
    }
  }
})
代码语言:javascript
运行
复制
// functions.js
export const hash = Math.floor(Math.random() * 90000) + 10000;

产出:

代码语言:javascript
运行
复制
dist/index.html
dist/index87047.css
dist/index87047.js
dist/vendor87047.js

or

dist/index.html
dist/index61047.css
dist/index61047.js
dist/vendor61047.js

...
票数 13
EN

Stack Overflow用户

发布于 2022-10-12 01:05:03

为了摆脱@wittgenstein的回答,您也可以使用来自package.json的版本(当您需要确保在发布到生产时缓存被破坏时):

代码语言:javascript
运行
复制
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { version } from './package.json'

export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      output: {
          entryFileNames: `[name].js?v=${version}`,
          chunkFileNames: `[name].js?v=${version}`,
          assetFileNames: `[name].[ext]?v=${version}`
      }
    }
  }
})

而且它不必是文件名本身,浏览器将看到添加到文件中的任何查询参数作为不同的文件

PWA可能会出现这样做的问题,因为这只需将版本添加到类似于上面的解决方案的文件名中:

代码语言:javascript
运行
复制
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { version } from './package.json'

export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      output: {
          entryFileNames: `[name].${version}.js`,
          chunkFileNames: `[name].${version}.js`,
          assetFileNames: `[name].${version}.[ext]`
      }
    }
  }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68046410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档