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

Vite.config.js最全配置指南及實(shí)戰(zhàn)案例(前端必看)

 更新時(shí)間:2026年07月04日 16:12:02   作者:墨魚(yú)筆記  
vite.config.js是Vite項(xiàng)目的核心配置文件,借助它能夠?qū)?Vite?構(gòu)建工具的各項(xiàng)行為進(jìn)行定制,這篇文章主要介紹了Vite.config.js最全配置指南及實(shí)戰(zhàn)案例的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 文件概述

vite.config.js 是 moyu 項(xiàng)目的 Vite 構(gòu)建配置文件,用于配置開(kāi)發(fā)服務(wù)器、構(gòu)建選項(xiàng)、插件系統(tǒng)等。該文件支持現(xiàn)代前端開(kāi)發(fā)的快速熱重載和高效構(gòu)建。

2. 核心配置解析

2.1 插件系統(tǒng) (Plugins)

let pluginAry = [
  vue({ /* Vue 2 支持 */ }),
  vueJsx({}), // JSX 語(yǔ)法支持
  transformPlugin(), // 自定義轉(zhuǎn)換插件
  htmlPlugin(), // HTML 處理插件
  eslintPlugin({ /* ESLint 集成 */ }),
  createI18nPlugin(), // 國(guó)際化插件
  legacyPlugin({ /* 兼容舊瀏覽器 */ }),
  ViteCodeInspectorPlugin({ /* 代碼檢查工具 */ }),
  viteExternalsPlugin({ /* 外部依賴(lài)配置 */ })
];

關(guān)鍵插件說(shuō)明:

插件功能
@vitejs/plugin-vue2支持 Vue 2 項(xiàng)目
@vitejs/plugin-vue2-jsx支持 Vue JSX 語(yǔ)法
transformPlugin()自定義代碼轉(zhuǎn)換(位于 ./build/vite/transform.plugin.js
htmlPlugin()HTML 模板處理
eslintPlugin開(kāi)發(fā)時(shí) ESLint 檢查
legacyPlugin生成兼容舊瀏覽器的代碼
viteExternalsPlugin將指定依賴(lài)作為外部庫(kù),不打包進(jìn) bundle

2.2 模塊別名配置 (Alias)

function getModuleAlias() {
  Object.keys(allModules).forEach(moduleName => {
    alias[moduleName] = path.resolve(__dirname, `./modules/${moduleName}/src/index.js`)
  });
}
getModuleAlias();

別名映射表:

  • '@'./src
  • '@modules'./modules
  • 'moyu-systemset-page'./modules/moyu-systemset-page/src/index.js
  • 'moyu-assetmanage-page'./modules/moyu-assetmanage-page/src/index.js
  • ...(其他子模塊)

這與 Webpack 配置中的別名功能完全一致,確保模塊導(dǎo)入的一致性。

2.3 開(kāi)發(fā)服務(wù)器配置 (Server)

server: {
  port: 3001,
  host: getNetworkIp(), // 自動(dòng)獲取局域網(wǎng) IP
  open: true, // 啟動(dòng)時(shí)自動(dòng)打開(kāi)瀏覽器
  cors: true, // 啟用跨域
  proxy: {
    '/socket.io': { /* WebSocket 代理 */ },
    '/api': { /* API 代理,移除 /api 前綴 */ }
  },
  hmr: { overlay: true } // 熱更新錯(cuò)誤覆蓋層
}

代理配置說(shuō)明:

  • /socket.io: 轉(zhuǎn)發(fā)到后端 WebSocket 服務(wù)
  • /api: 轉(zhuǎn)發(fā)到后端 API 服務(wù),并自動(dòng)移除 /api 前綴

2.4 外部依賴(lài)配置 (Externals)

viteExternalsPlugin({
  "echarts": "echarts",
  "vue": "Vue",
  "vuex": "Vuex",
  "SunflowerConfig": "SunflowerConfig",
  "SunflowerLangZH": 'SunflowerLangZH',
  "SunflowerLangEN": 'SunflowerLangEN',
  "three": "THREE",
  "moment": "moment",
  "moment-timezone": "moment-timezone",
})

作用:

  • 這些庫(kù)不會(huì)被打包進(jìn)最終的 bundle
  • 運(yùn)行時(shí)從全局變量或 CDN 加載
  • 減少 bundle 體積,提升加載速度

2.5 環(huán)境變量定義 (Define)

let define = {
  'process.env.NODE_ENV': '"development"',
  'process.env.VITE_ENV': true,
  'process.env.FORCE_DEPEND': false,
  'process.env.BASE_API': {}
}

這些變量在代碼中可以通過(guò) process.env.XXX 訪(fǎng)問(wèn),用于條件編譯和環(huán)境判斷。

3. 與微前端架構(gòu)的集成

3.1 模塊動(dòng)態(tài)加載

Vite 配置通過(guò) getModuleAlias() 動(dòng)態(tài)生成子模塊別名,與 childModule.json 配置文件聯(lián)動(dòng):

js// childModule.json
{
  "moyu-systemset-page": { "open": true, "desc": "系統(tǒng)設(shè)置" },
  "moyu-assetmanage-page": { "open": true, "desc": "資產(chǎn)管理中心" }
}
?
// vite.config.js 自動(dòng)生成
alias['moyu-systemset-page'] = './modules/moyu-systemset-page/src/index.js'
alias['moyu-assetmanage-page'] = './modules/moyu-assetmanage-page/src/index.js'

3.2 國(guó)際化支持

const i18nConfig = require('./build/service/developI18nConfig.js');
i18nConfig.createFile('zh');
i18nConfig.createFile('en');
?
// 插件集成
createI18nPlugin()

啟動(dòng)時(shí)自動(dòng)生成中英文語(yǔ)言包文件,支持運(yùn)行時(shí)切換。

3.3 路由和生成器插件

pluginAry.unshift(routerPlugin.plugin());
pluginAry.unshift(generatorPlugin.plugin());
pluginAry.unshift(wormholePlugin());
  • routerPlugin: 路由相關(guān)功能
  • generatorPlugin: 代碼生成器
  • wormholePlugin: 可能是內(nèi)部通信或數(shù)據(jù)隧道插件

4. 構(gòu)建優(yōu)化配置

4.1 依賴(lài)預(yù)構(gòu)建

let optimizeDeps = {
  include: Object.keys(pkg.dependencies), // 預(yù)構(gòu)建所有依賴(lài)
  exclude: ["canvas"] // 排除 canvas
}

4.2 生產(chǎn)構(gòu)建配置

build: {
  target: 'es2015', // 目標(biāo) JavaScript 版本
  minify: 'terser', // 使用 terser 壓縮
  manifest: false, // 不生成 manifest
  sourcemap: false, // 不生成 source map
  outDir: 'dist' // 輸出目錄
}

4.3 CSS 預(yù)處理器

css: {
  preprocessorOptions: {
    less: {
      javascriptEnabled: true, // 支持 Less 中的 JavaScript
    }
  }
}

5. 與 Webpack 配置的對(duì)比

功能Webpack 配置Vite 配置
模塊別名resolve.aliasresolve.alias
開(kāi)發(fā)服務(wù)器devServerserver
代理配置devServer.proxyserver.proxy
插件系統(tǒng)plugins 數(shù)組plugins 數(shù)組
外部依賴(lài)externalsviteExternalsPlugin
環(huán)境變量DefinePlugindefine

6. 完整工作流程

┌─────────────────────────────────────────────────────────────────────────┐
│  1. 啟動(dòng) Vite 開(kāi)發(fā)服務(wù)器 (npm run dev)                                 │
└─────────────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────────────┐
│  2. 執(zhí)行 vite.config.js                                                 │
│     - 讀取 childModule.json                                             │
│     - 生成模塊別名                                                      │
│     - 創(chuàng)建國(guó)際化文件                                                    │
│     - 配置插件和服務(wù)器                                                  │
└─────────────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────────────┐
│  3. 啟動(dòng)開(kāi)發(fā)服務(wù)器                                                      │
│     - 監(jiān)聽(tīng) 3001 端口                                                    │
│     - 自動(dòng)打開(kāi)瀏覽器                                                    │
│     - 配置 API 代理                                                     │
└─────────────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────────────┐
│  4. 模塊導(dǎo)入解析                                                        │
│     import 'moyu-systemset-page'                                       │
│     → 解析為 ./modules/moyu-systemset-page/src/index.js                │
│     → 執(zhí)行 pushComponent() 注冊(cè)模塊                                     │
└─────────────────────────────────────────────────────────────────────────┘

7. 關(guān)鍵優(yōu)勢(shì)

特性說(shuō)明
快速啟動(dòng)Vite 基于原生 ES 模塊,無(wú)需打包即可運(yùn)行
熱重載修改代碼即時(shí)更新,開(kāi)發(fā)體驗(yàn)極佳
現(xiàn)代化支持最新前端技術(shù)棧和標(biāo)準(zhǔn)
兼容性通過(guò) legacy 插件支持舊瀏覽器
微前端友好完美支持 moyu 的模塊化架構(gòu)
開(kāi)發(fā)效率內(nèi)置 ESLint、代碼檢查等開(kāi)發(fā)工具

8. 總結(jié)

vite.config.js 是 moyu 項(xiàng)目從 Webpack 遷移到 Vite 的關(guān)鍵配置文件,它:

  1. 保持了原有的微前端架構(gòu):通過(guò)動(dòng)態(tài)別名配置支持子模塊加載
  2. 提升了開(kāi)發(fā)體驗(yàn):利用 Vite 的快速啟動(dòng)和熱重載特性
  3. 優(yōu)化了構(gòu)建性能:現(xiàn)代化的構(gòu)建工具鏈
  4. 保持了功能完整性:國(guó)際化、路由、代理等核心功能全部保留

這個(gè)配置文件體現(xiàn)了 moyu 項(xiàng)目在保持架構(gòu)穩(wěn)定性的同時(shí),積極擁抱現(xiàn)代前端工程化工具的演進(jìn)策略。

二 全局注冊(cè)組件**

components/index.js文件
?
const globalComponents = {
    routerTabView: () => import('./router-tab-view/RouterTabView.vue'), // 路由tab菜單組件
    pageFootWrap: () => import('./page-foot-wrap/pageFootWrap.vue'), // 頁(yè)面底部固定組件樣式組件
}
?
function install(Vue) {
    Object.keys(globalComponents).forEach((componentName) => {
        Vue.component(componentName, globalComponents[componentName]);
    });
}
export default {
    install
}
?
?
main.js 文件
import GlobalComponents from './components/index.js';
GlobalComponents.install(Vue);

到此這篇關(guān)于Vite.config.js最全配置指南及實(shí)戰(zhàn)案例的文章就介紹到這了,更多相關(guān)Vite.config.js最全配置指南內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中調(diào)接口的方式詳解this.$api、直接調(diào)用、axios

    vue中調(diào)接口的方式詳解this.$api、直接調(diào)用、axios

    這篇文章主要介紹了vue中調(diào)接口的方式:this.$api、直接調(diào)用、axios,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • 關(guān)于keep-alive路由多級(jí)嵌套不生效的解決方案

    關(guān)于keep-alive路由多級(jí)嵌套不生效的解決方案

    本文主要介紹了關(guān)于keep-alive路由多級(jí)嵌套不生效的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue3父組件調(diào)用子組件的方法例子

    vue3父組件調(diào)用子組件的方法例子

    這篇文章主要給大家介紹了關(guān)于vue3父組件調(diào)用子組件的方法例子,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Vue實(shí)例中生命周期created和mounted的區(qū)別詳解

    Vue實(shí)例中生命周期created和mounted的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于Vue實(shí)例中生命周期created和mounted區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 解讀vant的Uploader上傳問(wèn)題

    解讀vant的Uploader上傳問(wèn)題

    這篇文章主要介紹了解讀vant的Uploader上傳問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue基于環(huán)境變量統(tǒng)一的多級(jí)路徑部署終極指南

    Vue基于環(huán)境變量統(tǒng)一的多級(jí)路徑部署終極指南

    這篇文章主要為大家詳細(xì)介紹了一個(gè)完整的解決方案,從環(huán)境變量配置到Nginx部署,確保你的Vue項(xiàng)目可以靈活部署在任何路徑下,下面小編就為大家簡(jiǎn)單介紹一下吧
    2025-08-08
  • el-table實(shí)現(xiàn)給每行添加loading效果案例

    el-table實(shí)現(xiàn)給每行添加loading效果案例

    這篇文章主要介紹了el-table實(shí)現(xiàn)給每行添加loading效果案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue+element tabs選項(xiàng)卡分頁(yè)效果

    vue+element tabs選項(xiàng)卡分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了vue+element tabs選項(xiàng)卡分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • vue實(shí)現(xiàn)點(diǎn)擊某個(gè)div顯示與隱藏內(nèi)容功能實(shí)例

    vue實(shí)現(xiàn)點(diǎn)擊某個(gè)div顯示與隱藏內(nèi)容功能實(shí)例

    最近做項(xiàng)目有用到某個(gè)div顯示與隱藏內(nèi)容,所以下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)點(diǎn)擊某個(gè)div顯示與隱藏內(nèi)容功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vue?router?動(dòng)態(tài)路由清除方式

    vue?router?動(dòng)態(tài)路由清除方式

    這篇文章主要介紹了vue?router?動(dòng)態(tài)路由清除方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

灵川县| 新宾| 定州市| 洛扎县| 乌鲁木齐市| 东港市| 巴彦县| 黄山市| 马龙县| 万州区| 洱源县| 揭阳市| 卫辉市| 阿荣旗| 元朗区| 化隆| 琼中| 额济纳旗| 利津县| 宣恩县| 长葛市| 星子县| 仁寿县| 甘南县| 军事| 长春市| 徐水县| 崇阳县| 晋城| 安龙县| 廉江市| 阳信县| 南皮县| 西乌| 普定县| 宿迁市| 织金县| 黎城县| 芦溪县| 醴陵市| 武胜县|