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}'],
},
})然后你可以在源文件中编写测试:
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:
json
{
"compilerOptions": {
"types": ["vitest/importMeta"]
}
}