当前位置: 首页 > article >正文

Vite Vue3 配置 Composition API 自动导入与项目插件拆分

为了提升开发效率,减少重复引入 refreactivecomputed 等 Composition API 的繁琐操作,通过 unplugin-auto-import 插件实现自动导入。

1、配置自动导入

1.1 安装插件

npm install -D unplugin-auto-import

1.2 配置

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'export default defineConfig({plugins: [vue(),AutoImport({imports: ['vue', 			// ref、active、computed、watch 等'vue-router', 	// useRouter、useRoute 等'pinia'			// defineStore 等],dts: true			// 生成 auto-imports.d.ts 文件,用于 TypeScript 支持})]
})
2、优化(拆分) vite.config.js

随着项目规模扩大,vite.config.js 文件可能会变得臃肿。可以将插件配置部分提取到单独的模块中,增强代码组织性和可维护性。

2.1 最终目录结构

project-root/
├── vite.config.js
├── vite/
│   ├── plugins.js
│   ├── auto-import.js
│   └── compression.js

2.2 主配置文件:vite.config.js

import { defineConfig, loadEnv } from 'vite'
import createVitePlugins from './vite/plugins'export default defineConfig(({ mode, command }) => {const env = loadEnv(mode, process.cwd())return {plugins: createVitePlugins(env, command === 'build')}
})

2.3 插件入口文件:vite/plugins.js

import vue from "@vitejs/plugin-vue";import createAutoImport from "./auto-import";
import createCompression from "./compression";export default function createVitePlugins(viteEnv, isBuild = false) {// 基础插件数组,始终包含Vue插件const vitePlugins = [vue()];// 添加自动导入插件vitePlugins.push(createAutoImport());// 如果是生产构建,添加压缩插件isBuild && vitePlugins.push(...createCompression(viteEnv));return vitePlugins;
}

2.4 自动导入插件:vite/auto-import.js

import autoImport from 'unplugin-auto-import/vite'// 自动导入插件
// 使用 unplugin-auto-import 自动导入 Vue、Vue Router 和 Pinia 的 API
// 无需手动导入 ref, reactive, useRouter, useStore 等常用 API
// 直接在代码中使用这些 API,插件会在构建时自动添加导入语句
export default function createAutoImport() {return autoImport({imports: ['vue','vue-router','pinia'],// false不生成类型声明文件,true类型支持dts: false })
}

2.5 构建压缩插件:vite/compression.js

import compression from "vite-plugin-compression";// 压缩插件
// 根据环境变量 VITE_BUILD_COMPRESS 动态配置压缩方式
export default function createCompression(env) {const { VITE_BUILD_COMPRESS } = env;const plugin = [];if (VITE_BUILD_COMPRESS) {const compressList = VITE_BUILD_COMPRESS.split(",");if (compressList.includes("gzip")) {// gzip 压缩plugin.push(compression({ext: ".gz", 				// 压缩文件扩展名deleteOriginFile: false 	// 删除原始文件}))}// brotli 压缩if (compressList.includes("brotli")) {plugin.push(compression({ext: ".br",algorithm: "brotliCompress", // 压缩算法deleteOriginFile: false}))}}return plugin;
}

2.6 示例环境变量 .env.production

VITE_BUILD_COMPRESS = gzip,brotli
http://www.lryc.cn/news/2391646.html

相关文章:

  • React从基础入门到高级实战:React 生态与工具 - React Query:异步状态管理
  • Grafana-Gauge仪表盘
  • 按照状态实现自定义排序的方法
  • 游戏引擎学习第313天:回到 Z 层级的工作
  • 论文阅读:arxiv 2024 SmoothLLM: Defending LLMs Against Jailbreaking Attacks
  • Milvus部署架构选择和Docker部署实战指南
  • 高效合并 Excel 表格实用工具
  • 【前端】Vue3 中实现两个组件的动态切换保活
  • 拉取gitlab项目
  • 树莓派(Raspberry Pi)安装Docker教程
  • 计算机视觉---YOLOv4
  • 在雄性小鼠自发脑网络中定位记忆巩固的因果中枢
  • 刷机维修进阶教程-----没有开启usb调试 如何在锁定机型的拨号界面特殊手段来开启ADB
  • Selenium 测试框架 - Kotlin
  • docker运行centos提示Operation not permitted
  • 010501上传下载_反弹shell-渗透命令-基础入门-网络安全
  • Flask集成Selenium实现网页截图
  • 机顶盒CM311-5s纯手机免拆刷机,全网通,当贝桌面
  • 知识图谱:AI时代语义认知的底层重构逻辑
  • centos7安装MySQL(保姆级教学)
  • 2025.5.23 【ZR NOI模拟赛 T3】高速公路 题解(容斥,高维前缀和,性质)
  • QGIS新手教程2:线图层与多边形图层基础操作指南(点线互转、中心点提取与WKT导出)
  • nova14 ultra,是如何防住80°C热水和10000KPa水压冲击的?
  • Spring Boot项目中实现单点登录(SSO)完整指南
  • Windows环境下Redis的安装使用与报错解决
  • 鸿蒙完整项目-仿盒马App(一)首页静态页面
  • 大模型(4)——Agent(基于大型语言模型的智能代理)
  • 39-居住证管理系统(小程序)
  • WPF【11_4】WPF实战-重构与美化(MVVM 架构)
  • 计算逆时针夹角(有向角度)——CAD c# 实现两条线(向量)的逆时针夹角