跳到正文
cccskills
免费在 GitHub 公开

setup-vitest

Set up Vitest for a TypeScript project, or migrate from Jest. Use for faster test execution, native ESM/TypeScript support, and Jest-compatible API. Covers config, dependency swaps, and test file updates.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md2.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Set Up Vitest

Goal

Add Vitest for fast test execution with native ESM and TypeScript support. If migrating from Jest, replace Jest + ts-jest with minimal code changes.

Why

  • Native ESM support (no ts-jest transform overhead)
  • Native TypeScript support (no configuration needed)
  • 2-5x faster test execution for ESM TypeScript projects
  • Jest-compatible API (minimal code changes when migrating)

Steps

1. Install Vitest

pnpm add -D vitest

2. Create vitest.config.ts

import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    globals: true,
    include: ['src/**/*.test.ts'],
  },
})

3. Update package.json Scripts

{
  "scripts": {
    "test": "vitest run",
    "test:watch": "vitest"
  }
}

4. Remove Jest (if migrating)

pnpm remove jest ts-jest @types/jest

Also delete jest.config.* if it exists.

5. Update Test Files (if migrating from Jest)

With globals: true, most Jest tests work unchanged. Key differences:

Mock changes (find and replace):

// jest.fn → vi.fn
// jest.mock → vi.mock
// jest.spyOn → vi.spyOn
// jest.clearAllMocks → vi.clearAllMocks
// jest.resetAllMocks → vi.resetAllMocks
// jest.restoreAllMocks → vi.restoreAllMocks
// jest.useFakeTimers → vi.useFakeTimers

Imports (if not using globals):

import { describe, test, expect, vi, beforeEach, afterEach } from 'vitest'

6. TypeScript Config

Add vitest types if using globals:

{
  "compilerOptions": {
    "types": ["vitest/globals"]
  }
}

Or create a separate tsconfig.test.json that extends the main one.

7. Verify

pnpm test           # All tests pass
pnpm test:watch     # Watch mode works

Gotchas

  • Vitest uses esbuild for transforms (fast but no type-checking during tests — use tsc --noEmit separately)
  • Snapshot files are compatible (.snap extension, same as Jest)
  • If Jest config uses moduleNameMapper, use resolve.alias in vitest config instead

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Add --json flag to CLI commands for machine-readable output on stdout. Generic pattern for any CLI tool, enabling piping to jq and CI/CD integration while keeping human-readable output on stderr.

中文简介正在准备中。当前显示原文说明。

krafteq/infraglue22026年7月8日 更新

Add shell completion support via a 'completion' subcommand for bash, zsh, and fish. Generic pattern for any Commander.js CLI, with static and dynamic completion examples.

中文简介正在准备中。当前显示原文说明。

krafteq/infraglue22026年7月8日 更新

Add zod schema validation for CLI options and YAML/JSON config files. Generic pattern for runtime validation with type-safe parsing and clear error messages in any Commander.js CLI.

中文简介正在准备中。当前显示原文说明。

krafteq/infraglue22026年7月8日 更新

Set up @changesets/cli for semantic versioning, CHANGELOG generation, and npm publishing in a monorepo or single package. Covers init, config, contributor workflow, GitHub Actions release automation, and npm provenance.

中文简介正在准备中。当前显示原文说明。

krafteq/infraglue22026年7月8日 更新

Add automatic CI/CD environment detection using ci-info package. Generic pattern for any CLI tool that needs to adapt behavior (prompts, output, integrations) based on whether it's running in CI.

中文简介正在准备中。当前显示原文说明。

krafteq/infraglue22026年7月8日 更新

Polish CLI user experience with @clack/prompts for interactive flows, update-notifier for version awareness, and enhanced Commander.js help text with examples and colors. Generic patterns for any Node.js CLI.

中文简介正在准备中。当前显示原文说明。

krafteq/infraglue22026年7月8日 更新

查看 krafteq 的全部技能

报告此技能的问题