/
createDefaultConfig.ts
73 lines (69 loc) · 2.41 KB
/
createDefaultConfig.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// @ts-ignore
import { isLernaPackage } from '@umijs/utils';
import { existsSync } from 'fs';
import { join } from 'path';
import assert from 'assert';
import { IUmiTestArgs } from '../types';
export default function(cwd: string, args: IUmiTestArgs) {
const testMatchTypes = ['spec', 'test'];
if (args.e2e) {
testMatchTypes.push('e2e');
}
const isLerna = isLernaPackage(cwd);
const hasPackage = isLerna && args.package;
const testMatchPrefix = hasPackage ? `**/packages/${args.package}/` : '';
const hasSrc = existsSync(join(cwd, 'src'));
if (hasPackage) {
assert(
existsSync(join(cwd, 'packages', args.package!)),
`You specified --package, but packages/${args.package} does not exists.`,
);
}
return {
collectCoverageFrom: [
'index.{js,jsx,ts,tsx}',
hasSrc && 'src/**/*.{js,jsx,ts,tsx}',
isLerna && !args.package && 'packages/*/src/**/*.{js,jsx,ts,tsx}',
isLerna &&
args.package &&
`packages/${args.package}/src/**/*.{js,jsx,ts,tsx}`,
'!**/typings/**',
'!**/types/**',
'!**/fixtures/**',
'!**/examples/**',
'!**/*.d.ts',
].filter(Boolean),
moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'],
moduleNameMapper: {
'\\.(css|less|sass|scss|stylus)$': require.resolve('identity-obj-proxy'),
},
setupFiles: [require.resolve('../../helpers/setupFiles/shim')],
setupFilesAfterEnv: [require.resolve('../../helpers/setupFiles/jasmine')],
testEnvironment: require.resolve('jest-environment-jsdom-fourteen'),
testMatch: [
`${testMatchPrefix}**/?*.(${testMatchTypes.join('|')}).(j|t)s?(x)`,
],
testPathIgnorePatterns: ['/node_modules/', '/fixtures/'],
transform: {
'^.+\\.(js|jsx|ts|tsx)$': require.resolve(
'../../helpers/transformers/javascript',
),
'^.+\\.(css|less|sass|scss|stylus)$': require.resolve(
'../../helpers/transformers/css',
),
'^(?!.*\\.(js|jsx|ts|tsx|css|less|sass|scss|stylus|json)$)': require.resolve(
'../../helpers/transformers/file',
),
},
verbose: true,
transformIgnorePatterns: [
// 加 [^/]*? 是为了兼容 tnpm 的目录结构
// 比如:_umi-test@1.5.5@umi-test
// `node_modules/(?!([^/]*?umi|[^/]*?umi-test)/)`,
],
// 用于设置 jest worker 启动的个数
...(process.env.MAX_WORKERS
? { maxWorkers: Number(process.env.MAX_WORKERS) }
: {}),
};
}