at main 1.3 kB view raw
1import globToRegexp from 'glob-to-regexp' 2import path from 'node:path' 3import {fileURLToPath} from 'node:url' 4import gitignore from 'parse-gitignore' 5import * as tsjest from 'ts-jest' 6 7function gitignorePatterns() { 8 const __filename = fileURLToPath(import.meta.url) 9 const __dirname = path.dirname(__filename) 10 const ignorefile = path.resolve(__dirname, '.gitignore') 11 12 const {patterns} = gitignore(ignorefile) 13 return patterns.map((p) => globToRegexp(p, {globstar: true}).source) 14} 15 16export default { 17 testMatch: ['<rootDir>/src/**/*.spec.{ts,tsx}'], 18 testPathIgnorePatterns: [...gitignorePatterns()], 19 20 cache: true, 21 cacheDirectory: path.join(import.meta.dirname, '.jestcache'), 22 23 testEnvironment: 'node', 24 setupFilesAfterEnv: ['<rootDir>/jest.setup.js'], 25 26 // relative imports work by default 27 moduleNameMapper: { 28 '\\.(css|scss|sass)$': 'identity-obj-proxy', 29 }, 30 31 // use ts-jest preset for esm support 32 // but we have to tell it to look at jsx files too, not just tsx 33 ...tsjest.createJsWithTsEsmPreset(), 34 35 // if node_modules are ESM, we need to _include_ them from 36 transformIgnorePatterns: ['node_modules/(?!(nanoid|jose|preact|@preact)/)'], 37 38 collectCoverageFrom: ['src/**/*.{ts,tsx}', '!src/**/*.spec.{ts,tsx}', '!src/**/node_modules/**'], 39}