// 安装elment-plus
pnpm install element-plus
// 安装按需引入插件
pnpm install -D unplugin-vue-components unplugin-auto-import
// 安装样式按需引入插件
pnpm install unplugin-element-plus
// 安装types/node
//vite.config.js
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { resolve } from "path";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
// 自动导入模块和组件
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import Inspect from "vite-plugin-inspect";
// 按需加载css
import ElementPlus from "unplugin-element-plus/vite";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
AutoImport({
imports: ["vue"],
resolvers: [
ElementPlusResolver(),
],
dts: resolve(__dirname, "./src/auto-imports.d.ts"),
}),
Components({
resolvers: [
// 自动导入 Element Plus 组件
ElementPlusResolver(),
],
dts: resolve(__dirname, "./src/components.d.ts"),
}),
ElementPlus({
useSource: true,
}),
Inspect(),
],
resolve: {
alias: {
"@": resolve(__dirname, "./src"),
"*": resolve(""),
assets: resolve(__dirname, "./src/assets"),
},
},
});
tsconfig.json
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"module": "ESNext",
"moduleResolution": "Node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"isolatedModules": true,
"esModuleInterop": true,
"lib": ["ESNext", "DOM"],
"skipLibCheck": true
},
"paths": {
"@/*": ["src/*"]
},
"types": ["element-plus/global"],
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"references": [{ "path": "./tsconfig.node.json" }]
}