Skip to content
Vitest 0
Main Navigation 指南API配置高級
1.6.1
0.34.6

繁體中文

English
简体中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

繁體中文

English
简体中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

外觀

Sidebar Navigation

指南

為什麼使用 Vitest

開始使用

功能特性

工作區

命令列界面

測試過濾器

覆蓋率

快照

模擬(Mocking)

型別測試

Vitest UI

瀏覽器模式 (實驗性)

原始碼測試

測試上下文

測試環境

擴展匹配器

IDE 整合支援

偵錯

與其他測試執行器的比較

遷移指南

常見錯誤

API

測試 API 參考文件

模擬函數 (Mock Functions)

Vi

expect

expectTypeOf

assertType

配置

配置 Vitest

本頁導覽

工作區 ​

Vitest 透過工作區設定檔,提供對 monorepo 的原生支援。您可以建立一個工作區來定義專案的設定。

定義工作區 ​

工作區應在其根目錄中包含 vitest.workspace 或 vitest.projects 檔案(如果有的話,與您的設定檔位於同一個資料夾中)。Vitest 支援的檔案副檔名可以是 ts、js 或 json。

工作區設定檔應預設匯出一個清單,其中包含引用專案的檔案或 glob 模式(全域匹配模式)。例如,如果您有一個名為 packages 的資料夾,其中包含您的專案,您可以使用此設定檔定義一個工作區:

ts
export default ['packages/*'];

即使 packages 中的資料夾沒有設定檔,Vitest 仍會將其視為個別專案。

WARNING

除非在此設定中明確指定,否則 Vitest 不會將根設定視為工作區專案,因此不會執行 include 中指定的測試。

您也可以使用其設定檔引用專案:

ts
export default ['packages/*/vitest.config.{e2e,unit}.ts'];

此模式僅會包含 vitest.config 檔案,且檔名在副檔名前包含 e2e 和 unit 的專案。

WARNING

如果您使用 glob 模式引用檔名,請確保設定檔名以 vite.config 或 vitest.config 開頭。否則,Vitest 會略過這些檔案。

您也可以使用行內配置定義專案。工作區檔案支援同時使用兩種語法格式。

ts
import { defineWorkspace } from 'vitest/config';

// defineWorkspace 提供了良好的類型提示,提升開發者體驗 (Developer Experience, DX)
export default defineWorkspace([
  'packages/*',
  {
    // 使用 "extends" 合併兩個設定
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // 建議在使用行內配置時定義名稱
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

所有專案應具有唯一名稱。否則,Vitest 將拋出錯誤訊息。如果您未在行內配置中提供名稱,Vitest 將自動分配一個數字。如果在使用 glob 語法定義的專案配置中未提供名稱,Vitest 會預設使用目錄名稱。

如果您不依賴行內配置,則只需在根目錄中建立一個小型的 json 檔案:

json
["packages/*"]

工作區專案不支援所有的配置屬性。為了提升類型安全性,請在專案設定檔中使用 defineProject 而非 defineConfig 方法:

ts
import { defineProject } from 'vitest/config';

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" 在專案配置中不受支援,
    // 因此會顯示錯誤
    reporters: ['json'],
  },
});

配置 ​

任何配置選項都不會從根層級設定檔繼承。您可以建立一個共享的設定檔,並將其與專案配置合併:

ts
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';

export default mergeConfig(
  configShared,
  defineProject({
    test: {
      environment: 'jsdom',
    },
  })
);

此外,某些配置選項在專案配置中是不允許的。最值得注意的包括:

  • coverage:coverage 涵蓋整個工作區
  • reporters:僅支援根層級的 reporters
  • resolveSnapshotPath:僅採用根層級的 resolver
  • 所有其他不影響測試執行器的配置選項

TIP

所有專案配置中不支援的配置選項,在 "Config" 頁面中都有 * 標記。

測試覆蓋率 ​

工作區專案的測試覆蓋率功能可正常運作。但是,如果您啟用了 all 選項,並且在某些專案中使用了非常規的副檔名,則需要在根設定檔中添加一個處理此副檔名的插件。

例如,如果某個套件使用 Vue 檔案,且有自己的設定檔,但部分檔案未在測試中導入,則測試覆蓋率分析可能會失敗,因為它依賴根配置而非專案配置。

Pager
上一頁功能特性
下一頁命令列界面

以 MIT 授權條款 發布。

版權所有 (c) 2024 Mithril Contributors

https://v0.vitest.dev/guide/workspace

以 MIT 授權條款 發布。

版權所有 (c) 2024 Mithril Contributors