UNPKG

@tsbb/jest

Version:

TSBB is a zero-config CLI that helps you develop, test, and publish modern TypeScript project.

69 lines (68 loc) 2.3 kB
import babelJest from 'babel-jest'; import { createRequire } from 'module'; const require = createRequire(import.meta.url); const hasJsxRuntime = (() => { if (process.env.DISABLE_NEW_JSX_TRANSFORM === 'true') { return false; } try { require.resolve('react/jsx-runtime'); return true; } catch (e) { return false; } })(); export default babelJest.createTransformer({ presets: [ [ require('@babel/preset-env').default, { targets: { node: 'current', }, }, ], require('@babel/preset-typescript').default, [ require('@babel/preset-react').default, { // Adds component stack to warning messages // Adds __self attribute to JSX which React will use for some warnings development: true, // Will use the native built-in instead of trying to polyfill // behavior for any plugins that require one. ...(hasJsxRuntime ? {} : { useBuiltIns: true }), runtime: hasJsxRuntime ? 'automatic' : 'classic', }, ], ], plugins: [ require('@babel/plugin-transform-runtime').default, /** * Fix: Cannot use 'import.meta' outside a module * https://github.com/facebook/jest/issues/12183#issuecomment-1004320665 */ require('babel-plugin-transform-import-meta').default, [require('@babel/plugin-proposal-decorators').default, { legacy: true }], [require('babel-plugin-parameter-decorator')], [require('@babel/plugin-proposal-class-properties').default, { loose: true }], [ require('@babel/plugin-proposal-private-methods').default, { loose: true, }, ], [ require('@babel/plugin-proposal-private-property-in-object').default, { loose: true, }, ], require('@babel/plugin-proposal-object-rest-spread').default, // Adds Numeric Separators require('@babel/plugin-proposal-numeric-separator').default, ], babelrc: false, configFile: false, });