我写的项目中,发现配置别名这块有些问题故作记录
export default defineConfig({plugins: [react()],//定义别名resolve: {// alias:[{find:'@',replacement:resolve(__dirname,'src')}],alias: {'@': resolve("./src"),}},server: {hmr: true,host: "0.0.0.0",proxy: {"/baidubce-api": {target: "https://aip.baidubce.com",changeOrigin: true,xfwd: true,ws: true,},}},
})
另一个项目
export default defineConfig(({ command, mode }) => {return {base: mode == 'test' ? "/test/web/" : "/web/",//定义别名alias: {"@": path.resolve(__dirname, "./src"),},plugins: [vue()],server: {open: true,host: "0.0.0.0",hmr: true},esbuild: {jsxFactory: 'h',jsxFragment: 'Fragment',jsxInject: "import { h } from 'vue';"},}
})
在 Vite 2.x 中,alias
选项的确应当被放置在 resolve
对象内,这是官方文档推荐的配置方式。然而,Vite 的配置有一定的灵活性,尤其是在早期版本中,某些配置项可能在主配置对象中直接使用仍然能够被识别。
尽管如此,根据 Vite 的官方文档和最佳实践,alias
应该被包含在 resolve
对象中,导致上面
可能在 alias
直接放置在主配置对象中仍然工作的原因可能有以下几种情况:
-
兼容性: Vite 在某些版本中可能仍然支持旧的配置方式,即使这不是推荐的用法。
-
IDE或类型定义: 你的 IDE 或 TypeScript 类型定义可能没有严格遵循 Vite 的最新规范,因此没有给出警告或错误。
-
自定义配置: 你可能有自定义的配置或脚本,它们扩展了 Vite 的默认行为,使得非标准配置仍然可以被识别。
然而,为了保持代码的健壯性和未来版本的兼容性,建议遵循 Vite 的官方推荐配置方式,将 alias
放在 resolve
对象内。这样可以确保你的项目配置随着 Vite 版本的升级而保持一致性和正确性