当前位置: 首页 > 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
http://www.xdnf.cn/news/696727.html

相关文章:

  • 输配电行业国产PLM转型方案:南通禛华电气的云PLM研发转型
  • rsync 如何通过参数加上端口号
  • 大观杂志大观杂志社大观编辑部2025年第4期目录
  • Java 并发编程通关秘籍:多线程基础 + 锁机制 + 工具类 + 性能优化
  • Appium+python自动化(七)- 认识Appium- 上
  • 【AI算法工程师面试指北】大模型微调中的灾难性遗忘该如何避免?
  • 多台电脑共用一个ip地址可以吗?会怎么样
  • Screen 连接远程服务器(Ubuntu)
  • docker中多个容器相互访问的端口问题
  • YOLOv8 模型部署到树莓派的完整指南
  • Golang | gRPC demo
  • C++23 <spanstream>:基于 std::span 的高效字符串流处理
  • 软件检测:确保品质关键步骤,企业该如何选择检测方式?
  • 王树森推荐系统公开课 排序05:排序模型的特征
  • 28、请求处理-【源码分析】-请求映射原理
  • 《仿盒马》app开发技术分享-- 确认订单页(业务逻辑)(端云一体)
  • 便携式遥测自跟踪天线
  • 大语言模型推理优化技术综述(The Art of LLM Inference)
  • Oracle基础知识(五)——ROWID ROWNUM
  • 前端开发定时,ES学习,java集合
  • 大数据学习笔记
  • 一种白平衡增益计算中白点权重计算简易实现方式
  • 【备忘】php命令行异步执行超长时间任务
  • Linux云计算训练营笔记day18(Python)
  • (25年5.28)ChatGPT Plus充值教程与实用指南:附国内外使用案例与模型排行
  • 【第2章 绘制】2.12 高级路径操作
  • MySQL 表内容的增删查改 -- CRUD操作,聚合函数,group by 子句
  • 英一真题阅读单词笔记 17年
  • 06.概念二:神经网络
  • 【进口商品防伪页面真假识别指南:从理论到实战的避雷手册】