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

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

相关文章:

  • Ubuntu系统rsyslog日志突然占用磁盘空间超大怎么办?
  • mybatis-plus实现增删改查(新手理解版)
  • 弱光环境下如何手持相机拍摄静物:摄影曝光之等效曝光认知
  • 【深度学习-pytorch篇】2. Activation, 多层感知机与LLaMA中的MLP实现解析
  • 学习率及相关优化参数详解:驱动模型高效训练
  • DNS解析过程以及使用的协议名称
  • Pytorch中一些重要的经典操作和简单讲解
  • Fastmcp本地搭建 ,查询本地mysql,接入agent-cursor--详细流程
  • P2278 HNOI2003 操作系统
  • 【Python3教程】Python3基础篇之OS文件目录方法
  • 通过阿里云服务发送邮件
  • 【Python-Day 19】函数的回响:深入理解 `return` 语句与返回值
  • [网页五子棋][匹配模块]服务器开发、用户管理器(创建匹配请求/响应对象、处理连接成功、处理下线)
  • 腾讯混元开源语音数字人模型 HunyuanVideo-Avatar:开启数字人 “能说会唱” 新时代
  • 异步上传石墨文件进度条前端展示记录(采用Redis中String数据结构实现)
  • 探寻黄金奶源带,悠纯乳业打造西北乳业新标杆
  • shell编程之sed命令详解
  • 数据安全进阶:102页数据安全评估方案精讲【附全文阅读】
  • SAP学习笔记 - 开发14 - 前端Fiori开发 HelloWorld
  • Python中的跨域资源共享(CORS)处理
  • 一流设计网站/百度竞价推广价格
  • 最新的网站开发技术/英文站友情链接去哪里查
  • 网站开发怎么拉客户/如何优化百度seo排名
  • 智汇团建网站登录平台/三只松鼠营销策划书
  • 定制钻戒/站长工具seo推广秒收录
  • 龙华做网站多少钱/山西网站seo