提升效能
預設情況下,Vitest 會根據 pool 在隔離的環境中執行每個測試檔案:
threads
pool 在單獨的Worker
中執行每個測試檔案forks
pool 在單獨的 forked child process 中執行每個測試檔案vmThreads
pool 在單獨的 VM context 中執行每個測試檔案,但它使用 workers 進行平行處理
這會大幅增加測試所需的時間。對於不依賴副作用且能正確清理其狀態的專案來說,這可能不是理想的選擇(通常是 node
環境的專案)。在這種情況下,停用隔離可以提升測試速度。為此,您可以透過 CLI 傳遞 --no-isolate
旗標,或在配置中將 test.isolate
屬性設為 false
。若您同時使用多個搭配 poolMatchGlobs
的 pool,您也可以為您正在使用的特定 pool 停用隔離。
bash
vitest --no-isolate
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
isolate: false,
// 您也可以僅為特定的 pool 停用隔離
poolOptions: {
forks: {
isolate: false,
},
},
},
});
TIP
如果您使用的是 vmThreads
pool,則無法停用隔離。請改用 threads
pool 以提升測試效能。
對於某些專案,關閉平行處理以提高啟動速度也可能是理想的選擇。為此,請透過 CLI 傳遞 --no-file-parallelism
旗標,或在配置中將 test.fileParallelism
屬性設為 false
。
bash
vitest --no-file-parallelism
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
fileParallelism: false,
},
});