第3章 配置 Vite

1 基本配置

Vite 的配置文件 vite.config.js 是基于 JavaScript 或 TypeScript 的文件,可以使用 ES 模塊語法進行導出。Vite 通過這個配置文件來調整各種構建和開發的選項。

1.1 創建配置文件

在項目根目錄創建 vite.config.js 文件:

// vite.config.js
import { defineConfig } from 'vite'export default defineConfig({// 基本配置項在這里
})

1.2 常用基本配置

root

指定項目的根目錄(默認是當前工作目錄):

export default defineConfig({root: 'src'
})
base

設置項目的基本公共路徑(默認是 /)。當你需要將項目部署在非根目錄時,調整這個參數:

export default defineConfig({base: '/my-app/'
})
publicDir

指定靜態資源目錄(默認是 public)。在這個目錄中的文件會被復制到輸出目錄的根部:

export default defineConfig({publicDir: 'static'
})
cacheDir

指定緩存目錄(默認是 node_modules/.vite),用于存儲預構建的依賴:

export default defineConfig({cacheDir: '.vite-cache'
})

2 環境變量和模式

Vite 支持基于文件的環境變量配置,你可以根據不同的構建模式(如開發模式和生產模式)使用不同的環境變量。

2.1 環境變量文件

你可以在項目根目錄中創建 .env 文件來定義環境變量:

# .env
VITE_APP_TITLE=My Vite App

對于特定模式的環境變量文件,可以命名為 .env.[mode]

# .env.production
VITE_APP_TITLE=My Vite App (Production)

2.2 使用環境變量

在代碼中,通過 import.meta.env 訪問環境變量:

console.log(import.meta.env.VITE_APP_TITLE)

2.3 環境變量的替換

Vite 會在構建時替換 import.meta.env 中的變量:

const apiUrl = import.meta.env.VITE_API_URL
fetch(apiUrl + '/endpoint').then(response => response.json()).then(data => console.log(data))

3 配置文件解析 (vite.config.js)

3.1defineConfig

defineConfig 是 Vite 提供的一個輔助函數,用于提供類型提示和自動完成:

import { defineConfig } from 'vite'export default defineConfig({// 配置項在這里
})

3.2 常見配置項

server

配置開發服務器相關的選項:

export default defineConfig({server: {host: '0.0.0.0', // 指定服務器主機名port: 3000,      // 指定服務器端口open: true,      // 自動打開瀏覽器proxy: {         // 配置代理'/api': {target: 'http://localhost:4000',changeOrigin: true,rewrite: path => path.replace(/^\/api/, '')}}}
})
build

配置構建選項:

export default defineConfig({build: {outDir: 'dist',        // 輸出目錄assetsDir: 'assets',   // 靜態資源目錄sourcemap: true,       // 生成 sourcemap 文件rollupOptions: {       // 自定義 Rollup 選項output: {manualChunks: {vendor: ['vue']}}}}
})
resolve

配置模塊解析選項:

export default defineConfig({resolve: {alias: {'@': '/src' // 路徑別名},extensions: ['.js', '.vue', '.json'] // 自動解析的擴展名}
})
css

配置 CSS 相關選項:

export default defineConfig({css: {preprocessorOptions: {scss: {additionalData: `@import "@/styles/variables.scss";`}},modules: {scopeBehaviour: 'local', // 配置 CSS 模塊行為generateScopedName: '[name]__[local]___[hash:base64:5]'}}
})
plugins

配置 Vite 插件:

import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()]
})

optimizeDeps

optimizeDeps 選項用于配置依賴預構建的行為。Vite 會掃描你的項目并預構建依賴,以提高開發服務器的啟動速度。

export default defineConfig({optimizeDeps: {entries: ['index.html'], // 手動指定要掃描的入口文件exclude: ['your-package'], // 排除不需要預構建的依賴include: ['another-package'] // 強制預構建某些依賴}
})

json

json 選項用于配置 JSON 文件的處理方式:

export default defineConfig({json: {namedExports: true, // 支持從 JSON 文件導入具名導出stringify: false    // 禁用自動 JSON.stringify 轉換}
})

esbuild

esbuild 選項用于配置內部使用的 esbuild 編譯器:

export default defineConfig({esbuild: {jsxFactory: 'h', // 自定義 JSX 工廠函數jsxFragment: 'Fragment', // 自定義 JSX 片段minify: true // 啟用代碼壓縮}
})

logLevel

logLevel 選項用于設置日志級別:

export default defineConfig({logLevel: 'info' // 可選值:'info', 'warn', 'error', 'silent'
})

define

define 選項用于定義全局常量,這些常量會在打包時進行替換:

export default defineConfig({define: {__VERSION__: JSON.stringify('1.0.0')}
})

ssr

ssr 選項用于配置服務器端渲染(SSR)相關的選項:

export default defineConfig({ssr: {external: ['react', 'react-dom'], // 指定外部化依賴noExternal: ['your-package'] // 禁止外部化某些依賴}
})

4 命令行接口 (CLI)

Vite 提供了一些命令行工具來幫助開發和構建項目。

4.1 啟動開發服務器

vite

這將啟動一個開發服務器,并打開一個瀏覽器窗口,你可以在其中查看應用。

或者使用 npm script:

npm run dev

4.2 構建生產版本

vite build

這將構建生產版本的應用,輸出到 dist 目錄。

或者使用 npm script:

npm run build

4.3 預覽構建結果

vite preview

這將啟動一個靜態文件服務器,用于預覽構建結果。

或者使用 npm script:

npm run serve

4.4 CLI 選項

可以通過命令行選項覆蓋配置文件中的選項。例如,指定配置文件:

vite --config ./config/vite.config.js

或者指定環境模式:

vite --mode production

4.5 命令行全局安裝

你可以將 Vite 安裝為全局命令,以便在任何地方使用:

npm install -g vite

安裝后,你可以使用 vite 命令來創建、開發和構建項目。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41499.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41499.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RNN、LSTM與GRU循環神經網絡的深度探索與實戰

循環神經網絡RNN、LSTM、GRU 一、引言1.1 序列數據的迷宮探索者:循環神經網絡(RNN)概覽1.2 深度探索的階梯:LSTM與GRU的崛起1.3 撰寫本博客的目的與意義 二、循環神經網絡(RNN)基礎2.1 定義與原理2.1.1 RNN…

【Python】組合數據類型:序列,列表,元組,字典,集合

個人主頁:【😊個人主頁】 系列專欄:【??Python】 文章目錄 前言組合數據類型序列類型序列常見的操作符列表列表操作len()append()insert()remove()index()sort()reverse()count() 元組三種序列類型的區別 集合類型四種操作符集合setfrozens…

【CSS in Depth 2精譯】2.5 無單位的數值與行高

當前內容所在位置 第一章 層疊、優先級與繼承第二章 相對單位 2.1 相對單位的威力2.2 em 與 rem2.3 告別像素思維2.4 視口的相對單位2.5 無單位的數值與行高 ??2.6 自定義屬性2.7 本章小結 2.5 無單位的數值與行高 有些屬性允許使用無單位的數值(unitless value…

【數據結構與算法】快速排序挖坑法

💓 博客主頁:倔強的石頭的CSDN主頁 📝Gitee主頁:倔強的石頭的gitee主頁 ? 文章專欄:《數據結構與算法》 期待您的關注 ?

前端面試題16(跨域問題)

跨域問題源于瀏覽器的同源策略(Same-origin policy),這一策略限制了來自不同源的“寫”操作(比如更新、刪除數據等),同時也限制了讀操作。當一個網頁嘗試請求與自身來源不同的資源時,瀏覽器會阻…

網絡配置文件中type

在網絡配置文件中,type是一個參數,用于指定網絡接口的類型。它指定了網絡接口所使用的協議或技術。 以下是一些常見的type參數值: “ethernet”:表示以太網接口,用于連接以太網設備,如有線網卡。 “wifi”…

Python實現ABC人工蜂群優化算法優化隨機森林回歸模型(RandomForestRegressor算法)項目實戰

說明:這是一個機器學習實戰項目(附帶數據代碼文檔視頻講解),如需數據代碼文檔視頻講解可以直接到文章最后獲取。 1.項目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一種新穎的基于群智能的全局優化…

PD虛擬機不能復制Mac的文件怎么回事 PD虛擬機不能復制Mac的文件怎么辦 Parallels Desktop怎么用

PD虛擬機不僅能提供跨系統協作的服務,還能進行虛擬機系統與原生系統間的文件共享、文本復制、文件復制等操作,讓系統間的資源可以科學利用。但在實際操作過程中,PD虛擬機不能復制Mac的文件怎么回事?PD虛擬機不能復制Mac的文件怎么…

linux centos7.9 安裝mysql5.7;root設置客戶端登錄、配置并發、表名大小寫敏感等

查看centos版本 cat /etc/centos-releasecentos版本為7.9 查看是否已安裝mariadb,安裝了需要先刪除 1.查看是否安裝了mariadb和mysql,安裝了需要先刪除 mariadb是mysql的一個分支,但要安裝mysql需要刪除它 執行rpm -qa|grep mariadb,查看mariadb情況 查找到有就刪除 執行…

中小學白名單編程競賽:精英競技場的深度解析

目錄 1. 引言2. 特點3. 為什么參加白名單編程競賽4. 具體競賽介紹4.1 全國中小學信息技術創新與實踐大賽(NOC大賽)4.1.1 面向對象4.1.2 考試內容4.1.3 賽事特點4.1.4 報名時間4.1.5 含金量4.1.6 優缺點4.1.7 賽事流程4.2 藍橋杯大賽4.2.1 面向對象4.2.2 考試內容4.2.3 賽事特…

Day59 動態規劃part12

LC115不同的子序列(未掌握) 遞推公式與LC392類似,但是初始化略有不同 LC392的dp數組含義為相同字符個數而本體的dp數組含義為出現的次數,因此dp[i][0]1 兩種情況 s[i-1]t[j-1] dp[i][j] dp[i-1][j-1]dp[i][j] dp[i-1][j] s[…

Kubernetes集群性能測試之kubemark集群搭建

Kubernetes集群性能測試之kubemark集群搭建 Kubemark是K8s官方提供的一個對K8s集群進行性能測試的工具。它可以模擬出一個K8s cluster(Kubemark cluster),不受資源限制,從而能夠測試的集群規模比真實集群大的多。這個cluster中ma…

運維鍋總詳解系統啟動流程

本文詳細介紹Linux及Windows系統啟動流程,并分析了它們啟動流程的異同以及造成這種異同的原因。希望本文對您理解系統的基本啟動流程有所幫助! 一、Linux系統啟動流程 Linux 系統的啟動流程可以分為幾個主要階段,從電源開啟到用戶登錄。每個…

Java筆試|面試 —— 對繼承性的理解

面試/筆試:談談對繼承性的理解>繼承性的好處:-減少了代碼的冗余,提高了復用性-提高了擴展性(父類統一擴展、繼承后擴展)-為多態的使用,提供了前提>Java中繼承的特點-局限性:類的單繼承性。…

有一個日期(Date)類的對象和一個時間(Time)類的對象,均已指定了內容,要求一次輸出其中的日期和時間

可以使用友元成員函數。在本例中除了介紹有關友元成員函數的簡單應用外,還將用到類的提前引用聲明,請讀者注意。編寫程序: 運行結果: 程序分析: 在一般情況下,兩個不同的類是互不相干的。display函…

關于Java異常機制及finally關鍵字的詳解

異常機制(Exception) 軟件程序在運行過程中,非常可能遇到異常問題。常見的異常: 1、用戶輸入錯誤 2、設備錯誤 3、硬件問題,例如打印機關掉、服務器問題 4、物理限制:磁盤滿了 Java是采用面向對象的方式來處理異常的。 處理過程…

基于Java的水果商品銷售網站

1 水果商品銷售網站概述 1.1 課題簡介 隨著電子商務在當今社會的迅猛發展,水果在線銷售已逐漸演變為一種極為便捷的購物方式,日益受到人們的青睞。本系統的設計初衷便是構建一個功能完備、用戶體驗友好的水果銷售平臺,致力于為用戶提供優質、…

Xcode簡介

Xcode 是蘋果公司為 macOS 平臺開發的一款集成開發環境(Integrated Development Environment,IDE),主要用于開發 iOS、iPadOS、macOS、watchOS 和 tvOS 的應用程序。Xcode 包含了一系列的軟件開發工具,涵蓋了從編寫代碼…

【植物大戰僵尸雜交版】獲取+存檔插件

文章目錄 一、還記得《植物大戰僵尸》嗎?二、在哪下載,怎么安裝?三、雜交版如何進行存檔功能概述 一、還記得《植物大戰僵尸》嗎? 最近,一款曾經在15年前風靡一時的經典游戲《植物大戰僵尸》似乎迎來了它的"文藝復…

漸開線花鍵測量學習筆記分享

大家好,繼續漸開線花鍵的相關內容,本期是漸開線花鍵測量相關的學習筆記分享: 花鍵檢測項目有花鍵大徑和小徑檢驗;內花鍵齒槽寬和外花鍵齒厚,以及漸開線終止圓 和起始圓直徑檢測;齒距累計誤差 、齒形誤差 、…