vue3+vite插件配置系列

289 阅读1分钟

1-unplugin-auto-import

1.下载

npm i -D unplugin-auto-import

2.vite.config.ts配置

import AutoImport from "unplugin-auto-import/vite"
export default defineConfig({
  plugins: [
    ...
     AutoImport ({
      imports: ["vue", "vue-router"], // 自动导入vue和vue-router相关函数
      dts: "src/auto-import.d.ts" // 生成 `auto-import.d.ts` 全局声明
    })
  ]
})

3.现在vue组件中可以直接使用composition api

  <button @click="add">add</button>
  <button @click="routerPush">go</button>
  {{count}}
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router'
const count = ref(0)
const router = useRouter()
function add() {
  count.value++
}
function routerPush(){
	router.push('a')
}
</script>
<template>
  <button @click="add">add</button>
  <button @click="routerPush">go</button>
  {{count}}
</template>

<script lang="ts" setup>
const count = ref(0)
const router = useRouter()
function add() {
  count.value++
}
function routerPush(){
	router.push('a')
}
</script>

2-unplugin-vue-components

描述:  按需组件自动导入 Vue。
作用:  省略import导入
未转换的:

<template>
  <div>
    <HelloWorld msg="Hello Vue 3.0 + Vite" />
  </div>
</template>

<script>
import HelloWorld from './src/components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

转换后:

<template> 
    <div> 
        <HelloWorld msg="Hello Vue 3.0 + Vite" />
    </div>
</template>

<script> 
    export default { name: 'App' } 
</script>

3-vite-plugin-pages

npm i -D vite-plugin-pages 
import Pages from "vite-plugin-pages"
export default defineConfig({
  plugins: [
    ...
       Pages({
          pagesDir: [{ dir: 'src/views', baseRoute: '' }],
          exclude: ['**/components/*.vue'],
          nuxtStyle: true,
          extendRoute(route) {
            if (route.path === '/') return { ...route, redirect: '/home/a' }
          },
       }),
  ]
})
import { createApp } from "vue"
import App from "./App.vue"

import { createRouter, createWebHashHistory } from "vue-router"
// 这里就是vite-plugin-pages生成的路由信息,正常使用即可
import routes from "virtual:generated-pages"

const router = createRouter({
  history: createWebHashHistory(),
  routes
})

createApp(App).use(router).mount("#app")