vite 按需引入element

740 阅读1分钟
// 安装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" }]
}