vite構建build選項配置(2024-05-29)


build.target?

  • 類型:?string | string[]
  • 默認:?'modules'
  • 相關內容:?瀏覽器兼容性

設置最終構建的瀏覽器兼容目標。默認值是一個 Vite 特有的值:'modules',這是指?支持原生 ES 模塊、原生 ESM 動態導入?和?import.meta?的瀏覽器。Vite 將替換?modules?為?['es2020', 'edge88', 'firefox78', 'chrome87', 'safari14']

另一個特殊值是 “esnext” —— 即假設有原生動態導入支持,并且將會轉譯得盡可能小:

  • 如果?build.minify?選項為?'terser',并且安裝的 Terser 版本小于 5.16.0,'esnext'?將會強制降級為?'es2021'
  • 其他情況下將完全不會執行轉譯。

轉換過程將會由 esbuild 執行,并且此值應該是一個合法的?esbuild 目標選項。自定義目標也可以是一個 ES 版本(例如:es2015)、一個瀏覽器版本(例如:chrome58)或是多個目標組成的一


build.modulePreload?

  • 類型:?boolean | { polyfill?: boolean, resolveDependencies?: ResolveModulePreloadDependenciesFn }
  • 默認值:?{ polyfill: true }

默認情況下,一個?模塊預加載 polyfill?會被自動注入。該 polyfill 會自動注入到每個?index.html?入口的的代理模塊中。如果構建通過?build.rollupOptions.input?被配置為了使用非 HTML 入口的形式,那么必須要在你的自定義入口中手動引入該 polyfill:

js

import 'vite/modulepreload-polyfill'

注意:此 polyfill?不適用于?Library 模式。如果你需要支持不支持動態引入的瀏覽器,你應該避免在你的庫中使用此選項。

此 polyfill 可以通過?{ polyfill: false }?來禁用。

每個動態導入要預加載的塊列表將由 Vite 計算。默認情況下,在載入這些依賴時,會使用一個包含?base?的絕對路徑。如果?base?是相對路徑(''?或者 './'),解析時則會使用?import.meta.url,以避免出現依賴于最終部署基路徑的絕對路徑。

目前有一個實驗性功能支持使用?resolveDependencies?函數對依賴項列表及其路徑進行細粒度控制。可以在這里?提供反饋。它期望接收一個?ResolveModulePreloadDependenciesFn?類型的函數:

ts

type ResolveModulePreloadDependenciesFn = (url: string,deps: string[],context: {importer: string},
) => string[]

resolveDependencies?函數將為每個動態導入調用,同時帶著一個它所依賴的 chunk 列表。并且它還會為每個在入口 HTML 文件中導入的 chunk 調用。 可以返回一個新的依賴關系數組,可能被過濾后變少了,也可能有更多依賴注入進來了,同時它們的路徑也被修改過。deps?路徑是相對于?build.outDir?的。若在注入該模塊到 HTML head 時使用?new URL(dep, import.meta.url)?獲取絕對路徑,則對于?hostType === 'js',允許返回一個相對于?hostId?的路徑。

js

type ResolveModulePreloadDependenciesFn = (url: string,deps: string[],context: {importer: string},
) => string[]

解析得到的依賴路徑可以再在之后使用?experimental.renderBuiltUrl?更改。


build.polyfillModulePreload?

  • 類型:?boolean
  • 默認:?true
  • 已廢棄?請使用?build.modulePreload.polyfill?替代

是否自動注入一個?模塊預加載 polyfill。


build.outDir?

  • 類型:?string
  • 默認:?dist

指定輸出路徑(相對于?項目根目錄).


build.assetsDir?

  • 類型:?string
  • 默認:?assets

指定生成靜態資源的存放路徑(相對于?build.outDir)。在?庫模式?下不能使用。


build.assetsInlineLimit?

  • 類型:?number?|?((filePath: string, content: Buffer) => boolean | undefined)
  • 默認:?4096?(4 KiB)

小于此閾值的導入或引用資源將內聯為 base64 編碼,以避免額外的 http 請求。設置為?0?可以完全禁用此項。

如果傳入了一個回調函數,可以通過返回一個布爾值來選擇是否加入。如果沒有返回任何內容,那么就會應用默認的邏輯。

Git LFS 占位符會自動排除在內聯之外,因為它們不包含其所表示的文件的內容。

注意

如果你指定了?build.lib,那么?build.assetsInlineLimit?將被忽略,無論文件大小或是否為 Git LFS 占位符,資源都會被內聯。


build.cssCodeSplit?

  • 類型:?boolean
  • 默認:?true

啟用/禁用 CSS 代碼拆分。當啟用時,在異步 chunk 中導入的 CSS 將內聯到異步 chunk 本身,并在其被加載時一并獲取。

如果禁用,整個項目中的所有 CSS 將被提取到一個 CSS 文件中。

注意

如果指定了?build.libbuild.cssCodeSplit?會默認為?false


build.cssTarget?

  • 類型:?string | string[]
  • 默認值:?與?build.target?一致

此選項允許用戶為 CSS 的壓縮設置一個不同的瀏覽器 target,此處的 target 并非是用于 JavaScript 轉寫目標。

應只在針對非主流瀏覽器時使用。 最直觀的示例是當你要兼容的場景是安卓微信中的 webview 時,它支持大多數現代的 JavaScript 功能,但并不支持?CSS 中的?#RGBA?十六進制顏色符號。 這種情況下,你需要將?build.cssTarget?設置為?chrome61,以防止 vite 將?rgba()?顏色轉化為?#RGBA?十六進制符號的形式。


build.cssMinify?

  • 類型:?boolean | 'esbuild' | 'lightningcss'
  • 默認:?與?build.minify?一致

此選項允許用戶覆蓋 CSS 最小化壓縮的配置,而不是使用默認的?build.minify,這樣你就可以單獨配置 JS 和 CSS 的最小化壓縮方式。Vite 默認使用?esbuild?來最小化 CSS。將此選項設置為?'lightningcss'?可以改用?Lightning CSS?進行壓縮。設置為該項,便可以使用?css.lightningcss?選項來進行配置。


build.sourcemap?

  • 類型:?boolean | 'inline' | 'hidden'
  • 默認:?false

構建后是否生成 source map 文件。如果為?true,將會創建一個獨立的 source map 文件。如果為?'inline',source map 將作為一個 data URI 附加在輸出文件中。'hidden'?的工作原理與?true?相似,只是 bundle 文件中相應的注釋將不被保留。


build.rollupOptions?

  • 類型:?RollupOptions

自定義底層的 Rollup 打包配置。這與從 Rollup 配置文件導出的選項相同,并將與 Vite 的內部 Rollup 選項合并。查看?Rollup 選項文檔?獲取更多細節。


build.commonjsOptions?

  • 類型:?RollupCommonJSOptions

傳遞給?@rollup/plugin-commonjs?插件的選項。


build.dynamicImportVarsOptions?

  • 類型:?RollupDynamicImportVarsOptions
  • 相關內容:?動態導入

傳遞給?@rollup/plugin-dynamic-import-vars?的選項。


build.lib?

  • 類型:?{ entry: string | string[] | { [entryAlias: string]: string }, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[], fileName?: string | ((format: ModuleFormat, entryName: string) => string) }
  • 相關內容:?庫模式

構建為庫。entry?是必需的,因為庫不能使用 HTML 作為入口。name?則是暴露的全局變量,并且在?formats?包含?'umd'?或?'iife'?時是必需的。默認?formats?是?['es', 'umd'],如果使用了多個配置入口,則是?['es', 'cjs']fileName?是輸出的包文件名,默認?fileName?是?package.json?的?name?選項,同時,它還可以被定義為參數為?format?和?entryAlias?的函數。


build.manifest?

  • 類型:?boolean | string
  • 默認:?false
  • 相關內容:?后端集成

當設置為?true,構建后將會生成?.vite/manifest.json?文件,包含了沒有被 hash 過的資源文件名和 hash 后版本的映射。可以為一些服務器框架渲染時提供正確的資源引入鏈接。當該值為一個字符串時,它將作為 manifest 文件的名字。


build.ssrManifest?

  • 類型:?boolean | string
  • 默認值:?false
  • 相關鏈接:?服務端渲染

當設置為?true?時,構建也將生成 SSR 的 manifest 文件,以確定生產中的樣式鏈接與資產預加載指令。當該值為一個字符串時,它將作為 manifest 文件的名字。


build.ssr?

  • 類型:?boolean | string
  • 默認值:?false
  • 相關鏈接:?服務端渲染

生成面向 SSR 的構建。此選項的值可以是字符串,用于直接定義 SSR 的入口,也可以為?true,但這需要通過設置?rollupOptions.input?來指定 SSR 的入口。


build.ssrEmitAssets?

  • 類型:?boolean
  • 默認:?false

在 SSR 構建期間,靜態資源不會被輸出,因為它們通常被認為是客戶端構建的一部分。這個選項允許框架強制在客戶端和 SSR 構建中都輸出它們。將靜態資源在構建后合并是框架的責任。


build.minify?

  • 類型:?boolean | 'terser' | 'esbuild'
  • 默認:?客戶端構建默認為'esbuild',SSR構建默認為?false

設置為?false?可以禁用最小化混淆,或是用來指定使用哪種混淆器。默認為?Esbuild,它比 terser 快 20-40 倍,壓縮率只差 1%-2%。Benchmarks

注意,在 lib 模式下使用?'es'?時,build.minify?選項不會縮減空格,因為會移除掉 pure 標注,導致破壞 tree-shaking。

當設置為?'terser'?時必須先安裝 Terser。

sh

npm add -D terser

build.terserOptions?

  • 類型:?TerserOptions

傳遞給 Terser 的更多?minify 選項。

此外,你還可以傳遞一個?maxWorkers: number?選項來指定最大的工作線程數。默認為 CPU 核心數減 1。


build.write?

  • 類型:?boolean
  • 默認:?true

設置為?false?來禁用將構建后的文件寫入磁盤。這常用于?編程式地調用?build()?在寫入磁盤之前,需要對構建后的文件進行進一步處理。


build.emptyOutDir?

  • 類型:?boolean
  • 默認:?若?outDir?在?root?目錄下,則為?true

默認情況下,若?outDir?在?root?目錄下,則 Vite 會在構建時清空該目錄。若?outDir?在根目錄之外則會拋出一個警告避免意外刪除掉重要的文件。可以設置該選項來關閉這個警告。該功能也可以通過命令行參數?--emptyOutDir?來使用。


build.copyPublicDir?

  • 類型:?boolean
  • 默認:?true

默認情況下,Vite 會在構建階段將?publicDir?目錄中的所有文件復制到?outDir?目錄中。可以通過設置該選項為?false?來禁用該行為。


build.reportCompressedSize?

  • 類型:?boolean
  • 默認:?true

啟用/禁用 gzip 壓縮大小報告。壓縮大型輸出文件可能會很慢,因此禁用該功能可能會提高大型項目的構建性能。


build.chunkSizeWarningLimit?

  • 類型:?number
  • 默認:?500

規定觸發警告的 chunk 大小。(以 kB 為單位)。它將與未壓縮的 chunk 大小進行比較,因為?JavaScript 大小本身與執行時間相關。


build.watch?

  • 類型:?WatcherOptions| null
  • 默認:?null

設置為?{}?則會啟用 rollup 的監聽器。對于只在構建階段或者集成流程使用的插件很常用。

在 Windows Linux 子系統(WSL)上使用 Vite

某些情況下 WSL2 的文件系統監聽可能無法正常工作。


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

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

相關文章

軟件構造復習的一些經驗筆記

軟件構造復習的一些經驗筆記 術語解釋 LSP原則(里氏替換原則) 什么是LSP原則,就是A類繼承B類,A類應該比B類的spec(規約)更強 換句話說:你爹會做魚香肉絲,你爹的手藝遺傳給了你&a…

基于springboot實現醫療掛號管理系統項目【項目源碼+論文說明】

基于springboot實現醫療掛號管理系統演示 摘要 在如今社會上,關于信息上面的處理,沒有任何一個企業或者個人會忽視,如何讓信息急速傳遞,并且歸檔儲存查詢,采用之前的紙張記錄模式已經不符合當前使用要求了。所以&…

JAVA -- 邏輯控制詳解

JAVA邏輯控制詳解 1.順序結構 按照代碼書寫的順序一行一行執行 System.out.println("123");//123 System.out.println("456");//456 System.out.println("789");//7892.分支結構 if 語句 switch 語句 2.1 if 語句 語法格式1(單分支) //if(布…

安全閥檢測周期:確定因素與操作流程詳解

在工業生產中,安全閥扮演著至關重要的角色,其性能的穩定性和準確性直接關系到設備和系統的安全。為確保安全閥的正常運行和事故防范,對其進行定期檢測顯得尤為關鍵。 接下來,佰德將深入探討安全閥檢測周期相關的內容,…

HTML靜態網頁成品作業(HTML+CSS)——家鄉芷江侗族自治縣介紹網頁(1個頁面)

🎉不定期分享源碼,關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 🏷?本套采用HTMLCSS,未使用Javacsript代碼,共有1個頁面。 二、作品演示 三、代…

【ROS機器人學習】--------1ROS工作空間和功能包創建

虛擬機工具和鏡像鏈接: https://pan.baidu.com/s/1HDmpbMESiUA2nj3qFVyFcw?pwd8686 提取碼: 8686 ROS工作空間是一個用于組織和管理ROS(機器人操作系統)包的目錄結構,它通常包含多個子目錄,用于存放源碼、構建文件和安裝文件。工…

香橙派OrangePI AiPro測評

實物 為AI而生 打開盒子 截圖電源開機進入 作為一個AI產品,必須有一個人機交互的界面才行。大家都在跑算法,于是我就開始進行整理著手整理搭建Qt的環境。 1、下載源碼 wget https://download.qt.io/archive/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz待…

RDP方式連接服務器上傳文件方法

隨筆 目錄 1. RDP 連接服務器 2. 為避免rdp 訪問界面文字不清晰 3. 本地上傳文件到服務器 1. RDP 連接服務器 # mstsc 連接服務器step1: 輸入mstscstep2: 輸入 IP, username, passwd 2. 為避免rdp 訪問界面文字不清晰 解決方法: 3. 本地上傳文件到服務器 step…

關于C++的特殊類定制

特殊類定制 在C中,一些特殊性質的類如何設計 類禁止拷貝的對象 C11 使用delete關鍵字賦值給拷貝構造和賦值C98將拷貝構造和賦值聲明在私有里 類只能在堆上創建的對象 將構造函數私有化, 提供一個獲取對象堆上創建對象的公有函數將析構函數私有化, 提供一個釋放…

JavaScript面向對象編程入門:從0到1的奇幻之旅【含代碼示例】

JavaScript面向對象編程入門:從零到英雄的奇幻之旅【含代碼示例】 一、OOP:編程界的哈利波特基本概念類與實例 二、揮舞魔杖:創建類與實例基本語法 三、繼承與封裝:家族的力量繼承封裝 四、實戰與技巧:打造堅固的魔法城…

IT行業的現狀與未來發展趨勢:從云計算到量子計算的技術變革

隨著技術的不斷進步,IT行業已經成為推動全球經濟和社會發展的關鍵力量。從云計算、大數據、人工智能到物聯網、5G通信和區塊鏈,這些技術正在重塑我們的生活和工作方式。本文將深入探討當前IT行業的現狀,并展望未來發展趨勢,旨在為…

vscode當前分支有未提交的修改,但是暫時不想提交,想要切換到另一個分支該怎么辦

當前分支有未提交的修改,但是暫時不想提交,想要切換到另一個分支該怎么辦? 首先,可以將當前修改暫存起來,以便之后恢復 git stash 然后切換到目標分支,例如需求A所在分支 git checkout feat-a-jie 修改完A需求后,需要先切換回之前的分支,例如需求B所在分支 git checkout feat…

免費插件集-illustrator插件-Ai插件-文本對象分行

文章目錄 1.介紹2.安裝3.通過窗口>擴展>知了插件4.功能解釋5.總結 1.介紹 本文介紹一款免費插件,加強illustrator使用人員工作效率,進行文本對象分行。首先從下載網址下載這款插件 https://download.csdn.net/download/m0_67316550/87890501&…

通過安全的云開發環境重新發現 DevOps 的心跳

云開發平臺如何“提升” DevOps 首先,我來簡單介紹一下什么是云開發環境:它通常運行帶有應用程序的 Linux 操作系統,提供預配置的環境,允許進行編碼、編譯和其他類似于本地環境的操作。從實現的角度來看,這樣的環境類…

前端 JS 經典:讀取文件原始內容

前言:有些時候在工程化開發中,我們需要讀取文件里面的原始內容,比如,你有一個文件,后綴名為 .myfile,你需要拿到這個文件里的內容,該怎么處理呢。 在 vue2 中,因為 vue2 使用 vue-c…

【算法】前綴和——尋找數組的中心下標

本節博客是用前綴和算法圖解“尋找數組的中心下標”,有需要借鑒即可。 目錄 1.題目2.題意3.前綴和求解4.示例代碼5.細節6.總結 1.題目 題目鏈接:LINK 2.題意 我們以示例1為例來圖解一下題意: 3.前綴和求解 根據已有經驗,我…

Java 讀取 xml 文件的五種方式

在編寫與 XML 數據交互的現代軟件應用時,有效地讀取和解析 XML 文件是至關重要的。XML(可擴展標記語言)因其靈活性和自我描述性,已成為數據存儲和傳輸的一種普遍格式。對于 Java 開發者來說,Java 提供了多種工具和庫來…

數據庫索引相關的知識點總結

目錄 1. 索引的概念 2. 索引的作用 3. 索引的類型 4. 索引的缺點 5. 索引的使用場景 6. 索引的設計原則 7. 索引的實現技術 8. 索引的優化技巧: 數據庫表的索引是一個非常重要的概念,它類似于一本書的目錄,可以幫助我們快速找到所需的…

Idea工具的使用技巧與常見問題解決方案

一、使用技巧 1、啟動微服務配置 如上圖,在編輯配置選項,將對應的啟動入口類加進去, 增加jvm啟動參數, 比如: -Denvuat 或者 -Denvuat -Dfile.encodingUTF-8 啟動配置可能不是-Denvuat,這個自己看代…

Android 11 Audio音頻系統配置文件解析

在AudioPolicyService的啟動過程中,會去創建AudioPolicyManager對象,進而去解析配置文件 //frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp AudioPolicyManager::AudioPolicyManager(AudioPolicyClientInterface *clientIn…