fes.js/packages/fes-plugin-jest/src/createDefaultConfig.js
2022-03-29 14:26:05 +08:00

47 lines
1.7 KiB
JavaScript

import { existsSync } from 'fs';
import { join } from 'path';
export default (cwd, args) => {
const testMatchTypes = ['spec', 'test'];
if (args.e2e) {
testMatchTypes.push('e2e');
}
const hasSrc = existsSync(join(cwd, 'src'));
return {
collectCoverageFrom: [
'index.{js,jsx,vue}',
hasSrc && 'src/**/*.{js,jsx,vue}',
'!**/.fes/**',
'!**/typings/**',
'!**/types/**',
'!**/fixtures/**',
'!**/examples/**',
'!**/*.d.ts',
].filter(Boolean),
moduleFileExtensions: [
'js',
'jsx',
'json',
// tell Jest to handle *.vue files
'vue',
],
transform: {
// process *.vue files with vue-jest
'^.+\\.vue$': require.resolve('vue3-jest'),
'.+\\.(css|styl|less|sass|scss|jpg|jpeg|png|svg|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
require.resolve('jest-transform-stub'),
'^.+\\.jsx?$': require.resolve('../helpers/transformers/javascript'),
},
transformIgnorePatterns: ['/node_modules/'],
// support the same @ -> src alias mapping in source code
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
testMatch: [`**/tests/**/*.(${testMatchTypes.join('|')}).[jt]s?(x)`, '**/__tests__/**/*.[jt]s?(x)'],
// https://github.com/facebook/jest/issues/6766
testURL: 'http://localhost/',
watchPlugins: [require.resolve('jest-watch-typeahead/filename'), require.resolve('jest-watch-typeahead/testname')],
verbose: true,
};
};