跳轉到內容

依賴最佳化選項

除非另有說明,本節中的選項僅應用於依賴最佳化器,該最佳化器僅在開發環境中使用。

optimizeDeps.entries 非繼承

  • 型別: string | string[]

預設情況下,Vite 會抓取所有的 .html 檔案來檢測需要預構建的依賴項(忽略 node_modulesbuild.outDir__tests__coverage)。如果指定了 build.rollupOptions.input,Vite 將轉而抓取那些入口點。

如果以上都不符合你的需求,可以使用此選項指定自定義入口——該值應該是一個 tinyglobby 模式或相對於 Vite 專案根目錄的模式陣列。這會覆蓋預設的入口推斷。當顯式定義了 optimizeDeps.entries 時,預設僅會忽略 node_modulesbuild.outDir 資料夾。如果需要忽略其他資料夾,可以在條目列表中使用以 ! 開頭的忽略模式。對於明確包含 node_modules 字串的模式,node_modules 不會被忽略。

optimizeDeps.exclude 非繼承

  • 型別: string[]

在預構建中強制排除的依賴項。

CommonJS

CommonJS 依賴項不應從最佳化中排除。如果一個 ESM 依賴項被排除在最佳化之外,但它包含巢狀的 CommonJS 依賴項,則該 CommonJS 依賴項應新增到 optimizeDeps.include 中。示例

js
export default 
defineConfig
({
optimizeDeps
: {
include
: ['esm-dep > cjs-dep'],
}, })

optimizeDeps.include 非繼承

  • 型別: string[]

預設情況下,不在 node_modules 中的連結包不會被預構建。使用此選項可強制預構建連結的包。

實驗性: 如果你使用的庫有許多深度匯入,你也可以指定一個尾隨 glob 模式來一次性預構建所有深度匯入。這將避免每當使用新的深度匯入時不斷進行預構建。 提供反饋。例如

js
export default 
defineConfig
({
optimizeDeps
: {
include
: ['my-lib/components/**/*.vue'],
}, })

optimizeDeps.rolldownOptions 非繼承

在依賴掃描和最佳化期間傳遞給 Rolldown 的選項。

某些選項已被省略,因為更改它們將與 Vite 的依賴最佳化不相容。

  • plugins 會與 Vite 的依賴外掛合併

optimizeDeps.esbuildOptions 非繼承

  • 型別: Omit<EsbuildBuildOptions, 'bundle' | 'entryPoints' | 'external' | 'write' | 'watch' | 'outdir' | 'outfile' | 'outbase' | 'outExtension' | 'metafile'>
  • 已棄用

此選項在內部轉換為 optimizeDeps.rolldownOptions。請改用 optimizeDeps.rolldownOptions

optimizeDeps.force 非繼承

  • 型別: boolean

設定為 true 可強制依賴預構建,忽略之前快取的最佳化依賴項。

optimizeDeps.noDiscovery 非繼承

  • 型別: boolean
  • 預設值: false

當設定為 true 時,將停用自動依賴發現,僅最佳化 optimizeDeps.include 中列出的依賴項。僅限 CJS 的依賴項在開發期間必須出現在 optimizeDeps.include 中。

optimizeDeps.holdUntilCrawlEnd 非繼承

啟用後,它將在冷啟動時暫存首次最佳化後的依賴結果,直到抓取完所有靜態匯入。這避免了在發現新依賴項並觸發新公共塊生成時需要進行整頁重新載入的情況。如果掃描程式加上 include 中顯式定義的依賴項已經找齊了所有依賴,最好停用此選項,以便讓瀏覽器並行處理更多請求。

optimizeDeps.disabled 非繼承

  • 已棄用
  • 實驗性: 提供反饋
  • 型別: boolean | 'build' | 'dev'
  • 預設值: 'build'

此選項已棄用。自 Vite 5.1 起,構建期間的依賴預構建已被移除。將 optimizeDeps.disabled 設定為 true'dev' 會停用最佳化器;設定為 false'build' 則保持最佳化器在開發期間啟用。

要完全停用最佳化器,請使用 optimizeDeps.noDiscovery: true 來禁止自動發現依賴項,並將 optimizeDeps.include 留空或不定義。

警告

構建期間最佳化依賴項是一項實驗性功能。嘗試此策略的專案也透過 build.commonjsOptions: { include: [] } 移除了 @rollup/plugin-commonjs。如果你這樣做過,警告資訊將指導你重新啟用它,以支援打包期間僅限 CJS 的包。

optimizeDeps.needsInterop 非繼承

  • 實驗性
  • 型別: string[]

在匯入這些依賴項時強制進行 ESM 互操作。Vite 能夠正確檢測依賴項何時需要互操作,因此通常不需要此選項。然而,依賴項的不同組合可能導致其中一些被以不同方式預構建。將這些包新增到 needsInterop 可以透過避免整頁重新載入來加快冷啟動速度。如果你的某個依賴項遇到這種情況,你會收到警告,建議在配置中將包名新增到此陣列中。