vite 自动导入组件 api

2024-02-22  本文已影响0人  冰落寞成

<meta charset="utf-8">

解决开发中经常使用的ref, computed等需要频繁引入的问题

1. 插件

unplugin-auto-import:auto import api for vite,webpack,rollup and esbuild。官网

// import { computed, ref } from 'vue'  不再需要
const ruleForm = reactive({
  password: null,
  account: null,
  code: null,
  key: null
})
const codeValids = ref(false)
const codeKey = ref(null)

unplugin-vue-components: auto import for vue,支持按需引入各类vue的组件库、自定义组件 官网

vite 配置项

import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
 plugins: [
      vue(),
      AutoImport({
        resolvers: [ElementPlusResolver()], // api
        include: [
          /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
          /\.vue$/,
          /\.vue\?vue/, // .vue
          /\.md$/, // .md
        ],
          // global imports to register
        imports: [
          // presets
          'vue',
          'vue-router',
          'pinia',
          {
            '@vueuse/core': [
              // named imports
              'useMouse', // import { useMouse } from '@vueuse/core',
              // alias
              ['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
            ],
            'axios': [
              // default imports
              ['default', 'axios'], // import { default as axios } from 'axios',
            ],
            // 自定义导入
            'vue-router': ['createRouter'],     // 导入指定的api
            '@/api/index.ts': [['*', 'api']],        // 导入指定文件下的api,并重命名
            '@/stores/index.ts': [['*', 'store']], 
            '@/plugins/require/index.ts':[['require','require']]
          },
          {
            from: 'vue-router',
            imports: ['RouteRecordRaw'],
            type: true,
          },
        ],
        // 生成auto-import.d.ts声明文件
        dts: 'types/auto-import.d.ts',
        // Array of strings of regexes that contains imports meant to be filtered out.
        ignore: [
          'useMouse',
          'useFetch'
        ],
        eslintrc:{
          enabled:false
        }

      }),
      Components({
        include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
        resolvers: [
          ElementPlusResolver(),
        ],
        // dirs: ['src/components/**/index.vue', 'src/pages/**/!(index.vue)/'],
        dirs:['src/components'],
        extensions: ['vue'],
        dts: 'types/components.d.ts', 
        // 遍历子目录。可省略
        deep: true
      })
    ],
上一篇 下一篇

猜你喜欢

热点阅读