<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vite + Vue</title>
</head>
<body>
  <div id="app"></div>
  <!-- 引入 Vue 3 的完整版本 -->
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</body>
</html>
在 vite.config.js 中配置 build.rollupOptions.external,告知 Vite 不要将 Vue 打包到构建结果中,而是直接使用全局变量 Vue。
修改 vite.config.js:
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      external: ['vue'], // 告诉 Rollup 不要打包 Vue
      output: {
        globals: {
          vue: 'Vue', // Vue 的全局变量名(与 CDN 引入的对应)
        },
      },
    },
  },
});
由于 Vue 是通过 <script> 标签引入的全局变量,直接使用即可。例如:
main.js
import { createApp } from 'vue'; // 使用全局的 Vue 对象
import App from './App.vue';
const app = createApp(App);
app.mount('#app');
为了让 TypeScript 或 IDE 提供正确的类型提示,你可以安装 Vue 的类型定义包:
npm install -D @types/vue