Skip to main content

Element-plus按需引入

按需导入

  • 首先你需要安装unplugin-vue-componentsunplugin-auto-import这两款插件
npm install -D unplugin-vue-components unplugin-auto-import
  • 然后把下列代码插入到你的 ViteWebpack 的配置文件中
// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
// ...
plugins: [
// ...
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
],
})
  • 这两个插件会在项目根目录下,生成auto-imports.d.tscomponents.d.ts这两个声明文件

    • 使用自动导入的组件,会在components.d.ts生成相应的导入类型
    //auto-imports.d.ts
    /* eslint-disable */
    /* prettier-ignore */
    // @ts-nocheck
    // noinspection JSUnusedGlobalSymbols
    // Generated by unplugin-auto-import
    export {}
    declare global {

    }

//components.d.ts
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}

declare module 'vue' {
export interface GlobalComponents {
ElButton: typeof import('element-plus/es')['ElButton']
ElRow: typeof import('element-plus/es')['ElRow']
HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
IconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default']
IconDocumentation: typeof import('./src/components/icons/IconDocumentation.vue')['default']
IconEcosystem: typeof import('./src/components/icons/IconEcosystem.vue')['default']
IconSupport: typeof import('./src/components/icons/IconSupport.vue')['default']
IconTooling: typeof import('./src/components/icons/IconTooling.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
TheWelcome: typeof import('./src/components/TheWelcome.vue')['default']
WelcomeItem: typeof import('./src/components/WelcomeItem.vue')['default']
}
}

  • 然后我们需要在tsconfig.app.json中包含这两个文件。
{
"extends": "@vue/tsconfig/tsconfig.dom.json",
"include": ["env.d.ts", "src/**/*", "src/**/*.vue","auto-imports.d.ts","components.d.ts"],//加上这两个声明文件
"exclude": ["src/**/__tests__/*"],
"compilerOptions": {
"composite": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}
}