← 中文资源

简体中文版本

用线程池并行化 Vitest

调整 Vitest 线程池与文件隔离,使大型套件更快完成,又不因共享状态引入抖动。

阅读英文原文

目标

不断增长的单元套件在 CI 上耗时过长,而单纯增加 worker 会带来抖动失败。本配方改用 threads 池并限制 worker 数量,让文件并行执行以缩短墙钟时间,同时对修改全局状态的测试保留隔离,避免跨文件泄漏;提醒需先消除抖动,加速才有意义。

步骤要点

  1. 使用 threads 池并设置 worker 数量上限。
  2. 对修改共享全局状态的测试开启隔离。
  3. 把 maxThreads 控制在核心数以下以避免内存不足。
  4. 重复运行确认无新增抖动失败。
export default {
  test: {
    pool: 'threads',
    poolOptions: { threads: { minThreads: 2, maxThreads: 4 } },
  },
};

排错提示

  • 隔离会带来启动开销。
  • 并行会放大共享资源缺陷。
  • 需先消除抖动再提速。

适用边界

  • 并行度受 CI 核心与内存限制。
  • 不解决测试本身的抖动根因。