最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vite進(jìn)階常用插件詳解與使用完整指南

 更新時(shí)間:2026年02月26日 09:32:26   作者:慧一居士  
Vite作為現(xiàn)代構(gòu)建工具,Vite已經(jīng)解決了前端工具鏈中最困難的部分,極速HMR、原生ESM、干凈的插件API,以及生產(chǎn)級(jí)打包能力,這篇文章主要介紹了Vite進(jìn)階常用插件詳解與使用完整指南的相關(guān)資料,需要的朋友可以參考下

這部分插件主要關(guān)注開發(fā)體驗(yàn)優(yōu)化、生產(chǎn)構(gòu)建分析PWA 離線能力以及資源自動(dòng)化處理。以下是這 5 個(gè)插件的詳細(xì)用法和配置示例。

插件總覽

插件核心用途適用場(chǎng)景
vite-plugin-inspect調(diào)試神器:可視化查看每個(gè)插件的轉(zhuǎn)換耗時(shí)和中間代碼優(yōu)化構(gòu)建速度、排查插件沖突
rollup-plugin-visualizer體積分析:生成打包產(chǎn)物依賴樹圖表分析包體積過大原因、Tree-shaking 優(yōu)化
vite-plugin-pwaPWA 支持:生成 Service Worker,實(shí)現(xiàn)離線訪問和安裝移動(dòng)端 H5、需要離線能力的 Web 應(yīng)用
vite-plugin-eslint代碼規(guī)范:在構(gòu)建/開發(fā)時(shí)運(yùn)行 ESLint 檢查強(qiáng)制團(tuán)隊(duì)代碼規(guī)范,CI/CD 集成
unplugin-icons圖標(biāo)引擎:自動(dòng)導(dǎo)入并使用任意 Iconify 圖標(biāo)集替代 SVG Sprite,按需加載數(shù)千種圖標(biāo)

各插件詳細(xì)使用

1.vite-plugin-inspect- 插件調(diào)試與分析

作用
在開發(fā)服務(wù)器中提供一個(gè) UI 界面(通常在 http://localhost:3000/__inspect__),展示:

  • 每個(gè)插件對(duì)每個(gè)文件的轉(zhuǎn)換耗時(shí)。
  • 每個(gè)插件處理后的代碼內(nèi)容(Transform Result)。
  • 幫助定位導(dǎo)致構(gòu)建慢的插件或代碼邏輯。

安裝

npm i -D vite-plugin-inspect

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

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

export default defineConfig({
  plugins: [
    Inspect({
      // 是否在啟動(dòng)時(shí)自動(dòng)打開瀏覽器
      open: true, 
      // 輸出目錄
      outputDir: '.vite-inspect', 
      // 是否啟用 HTTPS (通常不需要)
      https: false,
    })
  ],
  // 建議僅在開發(fā)環(huán)境開啟,避免影響生產(chǎn)構(gòu)建性能
  // 或者通過環(huán)境變量控制
  // process.env.NODE_ENV === 'development' ? Inspect() : []
})

使用方法
啟動(dòng)項(xiàng)目后,訪問 http://localhost:<port>/__inspect__/ 即可查看詳細(xì)報(bào)告。

2.rollup-plugin-visualizer- 打包體積分析

作用

生成一個(gè)交互式的 HTML 文件(默認(rèn) dist/stats.html),以“旭日?qǐng)D”或“樹狀圖”形式展示打包后的模塊大小分布,幫助識(shí)別導(dǎo)致包體積過大的依賴。

安裝

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' (旭日?qǐng)D), 'treemap' (樹狀圖), 'network' (網(wǎng)絡(luò)圖)
      template: 'sunburst', 
      // 是否包含 gzip 后的大小分析
      gzipSize: true, 
      // 是否包含 brotli 后的大小分析
      brotliSize: true, 
    })
  ],
  build: {
    // 確保 sourcemap 開啟以便更準(zhǔn)確分析(可選,但推薦)
    sourcemap: true, 
  }
})

使用方法

運(yùn)行 npm run build,構(gòu)建完成后會(huì)自動(dòng)打開瀏覽器顯示 stats.html。你可以點(diǎn)擊區(qū)塊查看具體是哪個(gè)庫(kù)占用了空間。

3.vite-plugin-pwa- PWA (漸進(jìn)式 Web 應(yīng)用)

作用

自動(dòng)生成 Service Worker,配置 Manifest 文件,使網(wǎng)站具備:

  • 離線訪問:無網(wǎng)時(shí)也能加載頁面。
  • 可安裝性:用戶可將網(wǎng)站添加到桌面,像原生 App 一樣運(yùn)行。
  • 后臺(tái)同步推送通知。

安裝

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', // 自動(dòng)更新策略
      includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'],
      manifest: {
        name: '我的 Vite PWA 應(yīng)用',
        short_name: 'VitePWA',
        description: '一個(gè)基于 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' // 支持安卓自適應(yīng)圖標(biāo)
          }
        ]
      },
      workbox: {
        // 緩存策略配置
        globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
        // 運(yùn)行時(shí)緩存示例:緩存 API 請(qǐng)求
        runtimeCaching: [
          {
            urlPattern: /^https:\/\/api\.example\.com\/.*/i,
            handler: 'NetworkFirst', // 優(yōu)先網(wǎng)絡(luò),失敗則緩存
            options: {
              cacheName: 'api-cache',
              expiration: {
                maxEntries: 10,
                maxAgeSeconds: 60 * 60 * 24 // 24 小時(shí)
              }
            }
          }
        ]
      }
    })
  ]
})

注意:PWA 需要在 HTTPS 環(huán)境或 localhost 下才能生效。

4.vite-plugin-eslint- ESLint 檢查

作用

在 Vite 的開發(fā)服務(wù)器啟動(dòng)時(shí)或構(gòu)建時(shí),自動(dòng)運(yùn)行 ESLint 檢查代碼規(guī)范。如果發(fā)現(xiàn)錯(cuò)誤,會(huì)在終端或?yàn)g覽器覆蓋層中顯示。

?? 注意:在較新的 Vite 版本中,官方推薦使用編輯器集成(如 VS Code ESLint 插件)或 CI/CD 流程進(jìn)行 lint 檢查,因?yàn)闃?gòu)建時(shí)的 lint 可能會(huì)拖慢熱更新速度。但在需要強(qiáng)制阻斷構(gòu)建的場(chǎng)景下仍很有用。

安裝

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'], 
      // 發(fā)現(xiàn)錯(cuò)誤時(shí)是否失敗構(gòu)建 (開發(fā)環(huán)境通常設(shè)為 false 以免打斷 HMR)
      failOnError: process.env.NODE_ENV === 'production', 
      // 發(fā)現(xiàn)警告時(shí)是否失敗構(gòu)建
      failOnWarning: false, 
      // 是否自動(dòng)修復(fù) (謹(jǐn)慎使用,可能會(huì)覆蓋代碼)
      fix: false, 
      // 緩存檢查結(jié)果以提高速度
      cache: true, 
      cacheLocation: 'node_modules/.cache/.eslintcache',
    })
  ]
})

5.unplugin-icons- 圖標(biāo)自動(dòng)導(dǎo)入

作用

基于 Iconify 生態(tài),允許你直接使用 <IconName /> 組件方式使用超過 100,000+ 個(gè)圖標(biāo)(如 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' // 配合組件自動(dòng)注冊(cè)

export default defineConfig({
  plugins: [
    Icons({
      // 自動(dòng)加載圖標(biāo)編譯器
      compiler: 'vue3', 
      // 自定義圖標(biāo)縮放
      scale: 1.2, 
      // 默認(rèn)類名
      defaultClass: 'icon', 
      // 自定義圖標(biāo)集搜索路徑 (如果有本地 svg)
      customCollections: {
        // 'my-icons': { ... }
      }
    }),
    
    // 配合 unplugin-vue-components 實(shí)現(xiàn)自動(dòng)導(dǎo)入
    Components({
      resolvers: [
        IconsResolver({
          // 自動(dòng)導(dǎo)入前綴,例如 <MdiHome>
          prefix: '', 
          // 啟用的圖標(biāo)集,enabled 表示所有,也可以指定 ['mdi', 'fa']
          enabledCollections: ['mdi'], 
        }),
      ],
    }),
  ]
})

使用示例 (Vue 組件):

<template>
  <div>
    <!-- 直接使用,無需 import -->
    <!-- 格式:<圖標(biāo)集前綴>-<圖標(biāo)名> (如果配置了 prefix 為空) -->
    <MdiHome class="text-red-500" />
    <MdiAccountCircle :size="30" />
    
    <!-- 或者使用組件形式 -->
    <IconMdiHome />
  </div>
</template>

<script setup>
// 甚至不需要手動(dòng)導(dǎo)入,unplugin-icons 會(huì)自動(dòng)處理
// 如果沒配自動(dòng)注冊(cè),需手動(dòng): import MdiHome from '~icons/mdi/home'
</script>

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

綜合最佳實(shí)踐組合

在一個(gè)現(xiàn)代化的企業(yè)級(jí) Vite + Vue3 項(xiàng)目中,推薦的插件組合策略如下:

  1. 開發(fā)階段
    • 使用 unplugin-auto-import + unplugin-vue-components + unplugin-icons 極大減少樣板代碼。
    • 開啟 vite-plugin-inspect (按需) 分析構(gòu)建瓶頸。
    • 使用編輯器 ESLint 插件實(shí)時(shí)反饋,而非阻塞構(gòu)建。
  2. 構(gòu)建階段
    • 使用 rollup-plugin-visualizer 定期分析包體積,優(yōu)化依賴。
    • 使用 vite-plugin-compression (Gzip/Brotli) 減小傳輸體積。
    • 如果是面向 C 端用戶,務(wù)必配置 vite-plugin-pwa 提升體驗(yàn)。
  3. CI/CD 流水線
    • 在此階段運(yùn)行嚴(yán)格的 eslinttype-check,而不是在本地開發(fā)服務(wù)器中阻塞。

完整的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"
  }
}

通過這些插件的組合,可以構(gòu)建出開發(fā)體驗(yàn)極佳生產(chǎn)性能優(yōu)越的現(xiàn)代 Web 應(yīng)用。

總結(jié)

到此這篇關(guān)于Vite進(jìn)階常用插件詳解與使用完整指南的文章就介紹到這了,更多相關(guān)Vite插件使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實(shí)現(xiàn)的多頁面項(xiàng)目如何優(yōu)化打包的步驟詳解

    vue實(shí)現(xiàn)的多頁面項(xiàng)目如何優(yōu)化打包的步驟詳解

    這篇文章主要介紹了vue實(shí)現(xiàn)的多頁面項(xiàng)目如何優(yōu)化打包的步驟詳解,文中通過示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 解決echarts圖表使用v-show控制圖表顯示不全的問題

    解決echarts圖表使用v-show控制圖表顯示不全的問題

    這篇文章主要介紹了解決echarts圖表使用v-show控制圖表顯示不全的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue中如何使用xlsx讀取excel文件實(shí)例代碼

    vue中如何使用xlsx讀取excel文件實(shí)例代碼

    在Vue中使用xlsx庫(kù)可以幫助我們讀取和寫入Excel文件,下面這篇文章主要給大家介紹了關(guān)于vue中如何使用xlsx讀取excel文件的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Vue開發(fā)環(huán)境跨域訪問問題

    Vue開發(fā)環(huán)境跨域訪問問題

    這篇文章主要介紹了Vue開發(fā)環(huán)境跨域訪問問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Vue中兩種生成二維碼(帶logo)并下載方式總結(jié)

    Vue中兩種生成二維碼(帶logo)并下載方式總結(jié)

    與后端生成二維碼相比,前端生成二維碼更具有靈活性,下面這篇文章主要給大家介紹了關(guān)于Vue中兩種生成二維碼(帶logo)并下載的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 解析Vue2.0雙向綁定實(shí)現(xiàn)原理

    解析Vue2.0雙向綁定實(shí)現(xiàn)原理

    本篇文章主要介紹了解析Vue2.0雙向綁定實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 對(duì)Vue table 動(dòng)態(tài)表格td可編輯的方法詳解

    對(duì)Vue table 動(dòng)態(tài)表格td可編輯的方法詳解

    今天小編就為大家分享一篇對(duì)Vue table 動(dòng)態(tài)表格td可編輯的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue3使用深度選擇器修改樣式問題

    vue3使用深度選擇器修改樣式問題

    這篇文章主要介紹了vue3使用深度選擇器修改樣式問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vuex安裝失敗解決的方法實(shí)例

    vuex安裝失敗解決的方法實(shí)例

    Vuex是一個(gè)專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,下面這篇文章主要給大家介紹了關(guān)于vuex安裝失敗解決的方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解Vue中使用Axios攔截器

    詳解Vue中使用Axios攔截器

    這篇文章主要Vue使用Axios攔截器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論

杭锦后旗| 大丰市| 福海县| 谢通门县| 莱西市| 麟游县| 潞城市| 赞皇县| 肃南| 乌苏市| 琼结县| 郧西县| 樟树市| 深州市| 商南县| 九龙坡区| 昌宁县| 公安县| 襄汾县| 永顺县| 吕梁市| 凤冈县| 百色市| 久治县| 钟祥市| 神池县| 南汇区| 淅川县| 靖西县| 普兰店市| 松潘县| 台东市| 汉中市| 赫章县| 永新县| 定远县| 西安市| 白朗县| 若羌县| 图木舒克市| 安丘市|