遇到问题
在搭建完成正常开发的时候,也不知道在那个配置出了问题,每次一修改代码,保存vite都会重新reload,浏览器也会重新刷新,没有了热更新
测试了好久发现问题出在 unplugin-auto-import 和 unplugin-vue-components 这两个插件
- 第一个问题:
直接使用默认的声明文件生产位置(和src同级),此时src下面的所有vue文件无法读取到声明文件,ts代码提示会有报错,但是不会出现page reload 和浏览器刷新问题
配置如下
export default defineConfig({
plugins: [
vue(),
AutoImport({
imports: ['vue', 'vue-router'],
resolvers: [ElementPlusResolver()]
}),
Components({
resolvers: [ElementPlusResolver()]
})
]
})
解决办法
只需要在tsconfig.json 里面加一个配置
{
"include": [
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue",
"./**/*.d.ts" // 加这一行,让ts读取到和src同级的声明文件
],
}
- 第二个问题
在上面第一个问题出来后,我选择了修改默认声明文件的位置,不是和src同级而是在src里面生产,这样就可以直接读取到声明文件
问题来了!!!
这个时候只要你修改任何一行代码哪怕是加个空格,终端都会打印如下信息,浏览器就刷新了,hmr功能没有了,开发效率大打折扣hmr update /src/page/login/Index.vue?vue&type=style&index=0&scope=true&lang.scss
hmr update /src/styles/index.scss
14:33:04 [vite] page reload src/auto-imports.d.ts
export default defineConfig({
plugins: [
vue(),
AutoImport({
imports: ['vue', 'vue-router'],
dts: resolve(__dirname, 'src/auto-imports.d.ts'),
resolvers: [ElementPlusResolver()]
}),
Components({
resolvers: [ElementPlusResolver()],
dts: resolve(__dirname, 'src/global-components.d.ts')
})
]
})