diff --git a/presets/default/jest-preset.js b/presets/default/jest-preset.js index 83a038128f..bdbaf701a1 100644 --- a/presets/default/jest-preset.js +++ b/presets/default/jest-preset.js @@ -1,3 +1 @@ -const create = require('../create') - -module.exports = create() +module.exports = require('..').defaults diff --git a/presets/index.d.ts b/presets/index.d.ts new file mode 100644 index 0000000000..2d63d8e167 --- /dev/null +++ b/presets/index.d.ts @@ -0,0 +1,5 @@ +import { TsJestPresets } from '../dist/types' + +export const defaults: TsJesPresets +export const jsWithTs: TsJesPresets +export const jsWithBabel: TsJesPresets diff --git a/presets/index.js b/presets/index.js new file mode 100644 index 0000000000..73195684d3 --- /dev/null +++ b/presets/index.js @@ -0,0 +1,13 @@ +const create = './create' + +module.exports = { + get defaults() { return create() }, + get jsWithTs() { return create({ allowJs: true }) }, + get jsWithBabel() { + return create({ allowJs: false }, { + transform: { + '^.+\\.jsx?$': 'babel-jest', + }, + }) + }, +} diff --git a/presets/js-with-babel/jest-preset.js b/presets/js-with-babel/jest-preset.js index 3248730a45..7e252420ad 100644 --- a/presets/js-with-babel/jest-preset.js +++ b/presets/js-with-babel/jest-preset.js @@ -1,7 +1 @@ -const create = require('../create') - -module.exports = create({ allowJs: false }, { - transform: { - '^.+\\.jsx?$': 'babel-jest', - }, -}) +module.exports = require('..').jsWithBabel diff --git a/presets/js-with-ts/jest-preset.js b/presets/js-with-ts/jest-preset.js index 639e6567be..d549de07eb 100644 --- a/presets/js-with-ts/jest-preset.js +++ b/presets/js-with-ts/jest-preset.js @@ -1,3 +1 @@ -const create = require('../create') - -module.exports = create({allowJs: true}) +module.exports = require('..').jsWithTs diff --git a/src/config/create-jest-preset.ts b/src/config/create-jest-preset.ts index 01334190c7..999c500c20 100644 --- a/src/config/create-jest-preset.ts +++ b/src/config/create-jest-preset.ts @@ -1,6 +1,6 @@ import * as jestConfig from 'jest-config' -import { CreateJestPresetOptions } from '../types' +import { CreateJestPresetOptions, TsJestPresets } from '../types' import { rootLogger } from '../util/logger' const logger = rootLogger.child({ namespace: 'jest-preset' }) @@ -12,7 +12,10 @@ const defaults = jestConfig.defaults || { moduleFileExtensions: ['js', 'json', 'jsx', 'node'], } -export function createJestPreset({ allowJs = false }: CreateJestPresetOptions = {}, from?: jest.InitialOptions) { +export function createJestPreset( + { allowJs = false }: CreateJestPresetOptions = {}, + from?: jest.InitialOptions, +): TsJestPresets { logger.debug({ allowJs }, 'creating jest presets', allowJs ? 'handling' : 'not handling', 'JavaScript files') from = { ...defaults, ...from } return { diff --git a/src/types.ts b/src/types.ts index 7e9b84081a..6feff23c1c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -69,6 +69,12 @@ export interface TsJestGlobalOptions { stringifyContentPathRegex?: string | RegExp } +export interface TsJestPresets { + transform: Record + testMatch: string[] + moduleFileExtensions: string[] +} + interface TsJestConfig$tsConfig$file { kind: 'file' value: string | undefined