1.Api 自動導入 unplugin-auto-import自動引入 composition api,不需要再手動引入。(npm 地址) 下載 npm i -D unplugin-auto-import 配置 vite.config.ts import AutoImport from "unplu ...
1.Api 自動導入
unplugin-auto-import
自動引入 composition api
,不需要再手動引入。(npm 地址)
- 下載
npm i -D unplugin-auto-import
- 配置
vite.config.ts
import AutoImport from "unplugin-auto-import/vite";
export default defineConfig({
plugins: [
vue(),
AutoImport({
/* options */
imports: ["vue"],
dts: "src/auto-import.d.ts",
}),
],
});
全部配置
AutoImport({
// 在哪些文件里可以直接引入
include: [
/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
/\.vue$/,
/\.vue\?vue/, // .vue
/\.md$/, // .md
],
// 自動引入哪些包
imports: [
// 自動引入整個模塊
"vue",
"vue-router",
// 自定義模塊引入,比如只需要自動引入某個東西,給引入的模塊起別名
{
"@vueuse/core": [
// 按需導出的模塊
"useMouse", // import { useMouse } from '@vueuse/core',
// 導出別名
["useFetch", "useMyFetch"], // import { useFetch as useMyFetch } from '@vueuse/core',
],
axios: [
// 預設導出
["default", "axios"], // import { default as axios } from 'axios',
],
},
],
// 聲明文件
dts: "./auto-imports.d.ts",
resolvers: [
/* ... */
],
// 生成相應的.eslintrc-auto-import.json文件。
// eslint globals文檔 - https://eslint.org/docs/user-guide/configuring/language-options#specifying-globals
eslintrc: {
enabled: false, // Default `false`
filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
globalsPropValue: true, // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
},
}),
聲明文件 auto-imports.d.js
時自動生成的,可以去看看文件內容,裡面會標明自動引入了哪些東西
2.setup name 增強 vite-plugin-vue-setup-extend
在使用 Vue3.2 的 setup 語法糖後,無法優雅的定義組件的 name 值,雖然 vite 會根據組件的文件名自動生成組件名,但是需要自定義的組件名時,就很不方便。
解決這個問題通常是通過寫兩個 script 標簽來解決,一個使用 setup,一個不使用,但這樣必然是不夠優雅的。
安裝vite-plugin-vue-setup-extend
插件可以優雅的解決這個問題
- 安裝
npm i vite-plugin-vue-setup-extend -D
- 配置 vite.config.ts
import { defineConfig } from "vite";
import VueSetupExtend from "vite-plugin-vue-setup-extend";
export default defineConfig({
plugins: [VueSetupExtend()],
});
- 使用
<script lang="ts" setup name="demo"></script>
在使用 vite-plugin-vue-setup-extend 0.4.0
及以前版本時,會有個問題:如果 script 標簽內沒有內容,即使給 script 標簽添加上 name 屬性,其在 vue-devtools
內也不會生效。
解決:不要讓 script 標簽內空著,例如:加行註釋。
<script lang="ts" setup name="demo">
// test
</script>
3.自動導入圖片
爽歸爽,但容易發生變數衝突,慎用!
自動導入圖像,同級目錄的文件名不能重覆!(官網地址)
- 安裝
npm i vite-plugin-vue-images -D
- 配置 vite.config.ts
import { defineConfig } from "vite";
import ViteImages from "vite-plugin-vue-images";
export default {
plugins: [
Vue(),
ViteImages({
dirs: ["src/assets"], // 圖像目錄的相對路徑
extensions: ["jpg", "jpeg", "png", "svg", "webp"], // 有效的圖像擴展
customResolvers: [], // 覆蓋名稱->圖像路徑解析的預設行為
customSearchRegex: "([a-zA-Z0-9]+)", // 重寫搜索要替換的變數的Regex。
}),
],
};
- 使用
<template>
<img :src="Image1" />
</template>
<script setup lang="ts"></script>
插件將轉換為:
<template>
<img :src="Image1" />
</template>
<script setup lang="ts">
import Image1 from "@/assets/Image1.png";
</script>
4.組件自動按需導入
- 安裝
npm i unplugin-vue-components -D
- 配置 vite.config.ts
import { defineConfig } from 'vite'
import Components from 'unplugin-vue-components/vite' // 按需載入自定義組件
// ui庫解析器,也可以自定義,需要安裝相關UI庫,unplugin-vue-components/resolvers
// 提供了以下集中解析器,使用的時候,需要安裝對應的UI庫,這裡以AntDesign示例
// 註釋的是包含的其他一些常用組件庫,供參考
import {
// ElementPlusResolver,
AntDesignVueResolver,
// VantResolver,
// HeadlessUiResolver,
// ElementUiResolver
} from 'unplugin-vue-components/resolvers'
export default defineConfig({
plugins: [
// 按需引入
Components({
dts: true,
dirs: ['src/components'], // 按需載入的文件夾
extensions: ['vue', 'jsx'], // 文件類型
// ui庫解析器,也可以自定義,需要安裝相關UI庫
resolvers: [
// VantResolver(),
// ElementPlusResolver(),
// AntDesignVueResolver(),
// HeadlessUiResolver(),
// ElementUiResolver()
AntDesignVueResolver({
// 參數配置可參考:https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/antdv.ts
// 自動引入 ant-design/icons-vue中的圖標,需要安裝@ant-design/icons-vue
resolveIcons: true,
}),
],
}),
],
})