Skip to content

includeSource

  • 类型: string[]
  • 默认值: []

匹配包含内联测试文件的 glob 规则。该规则相对于 root 进行解析(默认为 process.cwd())。

当定义时,Vitest 将运行所有包含 import.meta.vitest 的匹配文件。

WARNING

Vitest 对源文件执行基于文本的包含的简单检查。如果文件即使在注释中包含 import.meta.vitest,它也会被匹配为源文件内联测试。

Vitest 使用 tinyglobby 包来解析 glob。

示例

js
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
})

然后你可以在源文件中编写测试:

src/index.ts
ts
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0)
}

// #region 内联测试套件
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest
  it('add', () => {
    expect(add()).toBe(0)
    expect(add(1)).toBe(1)
    expect(add(1, 2, 3)).toBe(6)
  })
}
// #endregion

在生产环境构建时,你需要将 import.meta.vitest 替换为 undefined,以便打包工具移除未使用的代码。

js
import { defineConfig } from 'vite'

export default defineConfig({
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})
js
import { defineConfig } from 'rolldown/config'

export default defineConfig({
  transform: {
    define: { 
      'import.meta.vitest': 'undefined', 
    }, 
  },
})
js
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // 其他配置项
}
js
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // 其他配置项
})
js
const webpack = require('webpack')

module.exports = {
  plugins: [
    new webpack.DefinePlugin({ 
      'import.meta.vitest': 'undefined', 
    })
  ],
}

TIP

为了让 import.meta.vitest 获得更好的 TypeScript 支持,请在 tsconfig.json 中添加 vitest/importMeta

tsconfig.json
json
{
  "compilerOptions": {
    "types": ["vitest/importMeta"]
  }
}