Vite进阶常用插件详解与使用完整指南

 更新时间:2026年02月26日 09:32:26   作者:慧一居士  
Vite作为现代构建工具,Vite已经解决了前端工具链中最困难的部分,极速HMR、原生ESM、干净的插件API,以及生产级打包能力,这篇文章主要介绍了Vite进阶常用插件详解与使用完整指南的相关资料,需要的朋友可以参考下

这部分插件主要关注开发体验优化生产构建分析PWA 离线能力以及资源自动化处理。以下是这 5 个插件的详细用法和配置示例。

插件总览

插件核心用途适用场景
vite-plugin-inspect调试神器:可视化查看每个插件的转换耗时和中间代码优化构建速度、排查插件冲突
rollup-plugin-visualizer体积分析:生成打包产物依赖树图表分析包体积过大原因、Tree-shaking 优化
vite-plugin-pwaPWA 支持:生成 Service Worker,实现离线访问和安装移动端 H5、需要离线能力的 Web 应用
vite-plugin-eslint代码规范:在构建/开发时运行 ESLint 检查强制团队代码规范,CI/CD 集成
unplugin-icons图标引擎:自动导入并使用任意 Iconify 图标集替代 SVG Sprite,按需加载数千种图标

各插件详细使用

1.vite-plugin-inspect- 插件调试与分析

作用
在开发服务器中提供一个 UI 界面(通常在 http://localhost:3000/__inspect__),展示:

  • 每个插件对每个文件的转换耗时。
  • 每个插件处理后的代码内容(Transform Result)。
  • 帮助定位导致构建慢的插件或代码逻辑。

安装

npm i -D vite-plugin-inspect

配置示例 (vite.config.ts):

import { defineConfig } from 'vite'
import Inspect from 'vite-plugin-inspect'

export default defineConfig({
  plugins: [
    Inspect({
      // 是否在启动时自动打开浏览器
      open: true, 
      // 输出目录
      outputDir: '.vite-inspect', 
      // 是否启用 HTTPS (通常不需要)
      https: false,
    })
  ],
  // 建议仅在开发环境开启,避免影响生产构建性能
  // 或者通过环境变量控制
  // process.env.NODE_ENV === 'development' ? Inspect() : []
})

使用方法
启动项目后,访问 http://localhost:<port>/__inspect__/ 即可查看详细报告。

2.rollup-plugin-visualizer- 打包体积分析

作用

生成一个交互式的 HTML 文件(默认 dist/stats.html),以“旭日图”或“树状图”形式展示打包后的模块大小分布,帮助识别导致包体积过大的依赖。

安装

npm i -D rollup-plugin-visualizer

配置示例 (vite.config.ts):

import { defineConfig } from 'vite'
import { visualizer } from 'rollup-plugin-visualizer'

export default defineConfig({
  plugins: [
    visualizer({
      // 生成的文件名
      filename: 'dist/stats.html', 
      // 打开生成的文件
      open: true, 
      // 图表类型: 'sunburst' (旭日图), 'treemap' (树状图), 'network' (网络图)
      template: 'sunburst', 
      // 是否包含 gzip 后的大小分析
      gzipSize: true, 
      // 是否包含 brotli 后的大小分析
      brotliSize: true, 
    })
  ],
  build: {
    // 确保 sourcemap 开启以便更准确分析(可选,但推荐)
    sourcemap: true, 
  }
})

使用方法

运行 npm run build,构建完成后会自动打开浏览器显示 stats.html。你可以点击区块查看具体是哪个库占用了空间。

3.vite-plugin-pwa- PWA (渐进式 Web 应用)

作用

自动生成 Service Worker,配置 Manifest 文件,使网站具备:

  • 离线访问:无网时也能加载页面。
  • 可安装性:用户可将网站添加到桌面,像原生 App 一样运行。
  • 后台同步推送通知

安装

npm i -D vite-plugin-pwa

配置示例 (vite.config.ts):

import { defineConfig } from 'vite'
import { VitePWA } from 'vite-plugin-pwa'

export default defineConfig({
  plugins: [
    VitePWA({
      registerType: 'autoUpdate', // 自动更新策略
      includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'],
      manifest: {
        name: '我的 Vite PWA 应用',
        short_name: 'VitePWA',
        description: '一个基于 Vite 的 PWA 示例',
        theme_color: '#ffffff',
        background_color: '#ffffff',
        display: 'standalone', // 隐藏浏览器地址栏
        icons: [
          {
            src: 'pwa-192x192.png',
            sizes: '192x192',
            type: 'image/png'
          },
          {
            src: 'pwa-512x512.png',
            sizes: '512x512',
            type: 'image/png'
          },
          {
            src: 'pwa-512x512.png',
            sizes: '512x512',
            type: 'image/png',
            purpose: 'any maskable' // 支持安卓自适应图标
          }
        ]
      },
      workbox: {
        // 缓存策略配置
        globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
        // 运行时缓存示例:缓存 API 请求
        runtimeCaching: [
          {
            urlPattern: /^https:\/\/api\.example\.com\/.*/i,
            handler: 'NetworkFirst', // 优先网络,失败则缓存
            options: {
              cacheName: 'api-cache',
              expiration: {
                maxEntries: 10,
                maxAgeSeconds: 60 * 60 * 24 // 24 小时
              }
            }
          }
        ]
      }
    })
  ]
})

注意:PWA 需要在 HTTPS 环境或 localhost 下才能生效。

4.vite-plugin-eslint- ESLint 检查

作用

在 Vite 的开发服务器启动时或构建时,自动运行 ESLint 检查代码规范。如果发现错误,会在终端或浏览器覆盖层中显示。

⚠️ 注意:在较新的 Vite 版本中,官方推荐使用编辑器集成(如 VS Code ESLint 插件)或 CI/CD 流程进行 lint 检查,因为构建时的 lint 可能会拖慢热更新速度。但在需要强制阻断构建的场景下仍很有用。

安装

npm i -D vite-plugin-eslint
# 确保已安装 eslint
npm i -D eslint

配置示例 (vite.config.ts):

import { defineConfig } from 'vite'
import eslintPlugin from 'vite-plugin-eslint'

export default defineConfig({
  plugins: [
    eslintPlugin({
      // 包含的文件
      include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'], 
      // 排除的文件
      exclude: ['src/**/*.spec.ts'], 
      // 发现错误时是否失败构建 (开发环境通常设为 false 以免打断 HMR)
      failOnError: process.env.NODE_ENV === 'production', 
      // 发现警告时是否失败构建
      failOnWarning: false, 
      // 是否自动修复 (谨慎使用,可能会覆盖代码)
      fix: false, 
      // 缓存检查结果以提高速度
      cache: true, 
      cacheLocation: 'node_modules/.cache/.eslintcache',
    })
  ]
})

5.unplugin-icons- 图标自动导入

作用

基于 Iconify 生态,允许你直接使用 <IconName /> 组件方式使用超过 100,000+ 个图标(如 Material Design, FontAwesome, Carbon 等),无需下载 SVG 文件,支持按需编译和 Tree-shaking。

安装

npm i -D unplugin-icons
# 如果使用 Vue,还需要安装 @iconify-json/<集合名>
# 例如安装 Material Design Icons:
npm i -D @iconify-json/mdi

配置示例 (vite.config.ts):

import { defineConfig } from 'vite'
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import Components from 'unplugin-vue-components/vite' // 配合组件自动注册

export default defineConfig({
  plugins: [
    Icons({
      // 自动加载图标编译器
      compiler: 'vue3', 
      // 自定义图标缩放
      scale: 1.2, 
      // 默认类名
      defaultClass: 'icon', 
      // 自定义图标集搜索路径 (如果有本地 svg)
      customCollections: {
        // 'my-icons': { ... }
      }
    }),
    
    // 配合 unplugin-vue-components 实现自动导入
    Components({
      resolvers: [
        IconsResolver({
          // 自动导入前缀,例如 <MdiHome>
          prefix: '', 
          // 启用的图标集,enabled 表示所有,也可以指定 ['mdi', 'fa']
          enabledCollections: ['mdi'], 
        }),
      ],
    }),
  ]
})

使用示例 (Vue 组件):

<template>
  <div>
    <!-- 直接使用,无需 import -->
    <!-- 格式:<图标集前缀>-<图标名> (如果配置了 prefix 为空) -->
    <MdiHome class="text-red-500" />
    <MdiAccountCircle :size="30" />
    
    <!-- 或者使用组件形式 -->
    <IconMdiHome />
  </div>
</template>

<script setup>
// 甚至不需要手动导入,unplugin-icons 会自动处理
// 如果没配自动注册,需手动: import MdiHome from '~icons/mdi/home'
</script>

<style>
.icon {
  vertical-align: middle;
}
</style>

综合最佳实践组合

在一个现代化的企业级 Vite + Vue3 项目中,推荐的插件组合策略如下:

  1. 开发阶段
    • 使用 unplugin-auto-import + unplugin-vue-components + unplugin-icons 极大减少样板代码。
    • 开启 vite-plugin-inspect (按需) 分析构建瓶颈。
    • 使用编辑器 ESLint 插件实时反馈,而非阻塞构建。
  2. 构建阶段
    • 使用 rollup-plugin-visualizer 定期分析包体积,优化依赖。
    • 使用 vite-plugin-compression (Gzip/Brotli) 减小传输体积。
    • 如果是面向 C 端用户,务必配置 vite-plugin-pwa 提升体验。
  3. CI/CD 流水线
    • 在此阶段运行严格的 eslinttype-check,而不是在本地开发服务器中阻塞。

完整的package.json脚本示例

{
  "scripts": {
    "dev": "vite",
    "build": "vue-tsc --noEmit && vite build",
    "preview": "vite preview",
    "analyze": "vite build --mode analyze", 
    "lint": "eslint . --ext .vue,.js,.ts,.jsx,.tsx --fix"
  },
  "devDependencies": {
    "vite": "^5.0.0",
    "vite-plugin-inspect": "^0.8.0",
    "rollup-plugin-visualizer": "^5.12.0",
    "vite-plugin-pwa": "^0.19.0",
    "unplugin-icons": "^0.18.0",
    "@iconify-json/mdi": "^1.1.0"
  }
}

通过这些插件的组合,可以构建出开发体验极佳生产性能优越的现代 Web 应用。

总结

到此这篇关于Vite进阶常用插件详解与使用完整指南的文章就介绍到这了,更多相关Vite插件使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue中key的作用示例代码详解

    Vue中key的作用示例代码详解

    key的特殊attribute主要用在Vue的虚拟DOM算法,在新旧Nodes对比时辨识VNodes。这篇文章主要给大家介绍Vue中key的作用,感兴趣的朋友跟随小编一起看看吧
    2020-06-06
  • element ui el-calendar日历组件使用方法总结

    element ui el-calendar日历组件使用方法总结

    这篇文章主要给大家介绍了关于element ui el-calendar日历组件使用方法的相关资料,elementui是一款基于Vue.js的UI框架,其中的日历组件calendar是elementui中非常常用的组件之一,需要的朋友可以参考下
    2023-07-07
  • vue中数据状态轮询过程

    vue中数据状态轮询过程

    文章讲述了在Vue中实现数据状态轮询的两种方法,首先,介绍如何在页面挂载后请求数据,并根据数据状态决定是否轮询,在data中定义定时器,并在组件销毁前清空定时器以防止内存泄漏,如果无单独的状态接口,则将状态方法替换为数据方法
    2025-11-11
  • vue的全局提示框组件实例代码

    vue的全局提示框组件实例代码

    这篇文章主要介绍了vue的全局提示框组件实例代码,需要的朋友可以参考下
    2018-02-02
  • Vue2.0实现购物车功能

    Vue2.0实现购物车功能

    这篇文章主要为大家详细介绍了Vue2.0实现购物车功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • karma+webpack搭建vue单元测试环境的方法示例

    karma+webpack搭建vue单元测试环境的方法示例

    本篇文章主要介绍了karma+webpack搭建vue单元测试环境的方法示例,这次搭建的测试环境和开发环境隔离,所以理论上适用所有使用vue的开发环境。感兴趣的小伙伴们可以参考一下
    2018-05-05
  • vue-cli构建项目使用 less的方法

    vue-cli构建项目使用 less的方法

    这篇文章主要介绍了vue-cli构建项目使用 less,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • ElementUI 修改默认样式的几种办法(小结)

    ElementUI 修改默认样式的几种办法(小结)

    这篇文章主要介绍了ElementUI 修改默认样式的几种办法(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue基于websocket实现智能聊天及吸附动画效果

    vue基于websocket实现智能聊天及吸附动画效果

    这篇文章主要介绍了vue基于websocket实现智能聊天及吸附动画效果,主要功能是基于websocket实现聊天功能,封装了一个socket.js文件,使用Jwchat插件实现类似QQ、微信电脑端的功能,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • vue页面右下角添加悬浮按钮组件的方法代码

    vue页面右下角添加悬浮按钮组件的方法代码

    这篇文章主要介绍了vue页面右下角添加悬浮按钮组件的方法代码,在Vue项目中,通过在顶层路由文件中添加代码,可以实现页面左下角悬浮按钮的功能,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11

最新评论