diff --git a/packages/create-configs/src/steps/language-configuration.ts b/packages/create-configs/src/steps/language-configuration.ts index a823d31d..c0a8a74c 100644 --- a/packages/create-configs/src/steps/language-configuration.ts +++ b/packages/create-configs/src/steps/language-configuration.ts @@ -200,12 +200,17 @@ export async function set_package_type({ /** @private */ export function _generate_jest_config({ + languages, technologies, }: Omit): ConfigFile { const deps = new Dependencies(); + const config: string = ((ts: boolean, esm: boolean) => { + if (ts) return `ts-${esm ? 'esm' : 'cjs'}`; + else return 'js'; + })(languages.includes('ts'), technologies.includes('esm')); return { content: stripIndent` - import { config } from '${deps.d.depend('@code-style/jest-configs')}/ts-${technologies.includes('esm') ? 'esm' : 'cjs'}'; + import { config } from '${deps.d.depend('@code-style/jest-configs')}/${config}'; // eslint-disable-next-line import/no-default-export export default config; @@ -223,23 +228,21 @@ export async function create_jest_config({ technologies, overwrite, }: CreateJestConfigOptions): Promise { - const deps = new Dependencies([], ['jest']); - if (languages.includes('ts')) { - const path = 'jest.config.mjs'; - if ( - await verify_missing({ - path: [path, /^jest\.config\.(js|ts|mjs|cjs|json)$/u], - remove: overwrite, - }) - ) { - const config = _generate_jest_config({ - languages, - technologies, - }); - - await create_file(path, await prettify(path, config.content)); - deps.add(config.dependencies); - } + const deps = new Dependencies(); + const path = 'jest.config.mjs'; + if ( + await verify_missing({ + path: [path, /^jest\.config\.(js|ts|mjs|cjs|json)$/u], + remove: overwrite, + }) + ) { + const config = _generate_jest_config({ + languages, + technologies, + }); + + await create_file(path, await prettify(path, config.content)); + deps.add(config.dependencies); } return deps; diff --git a/packages/jest-configs/src/js.ts b/packages/jest-configs/src/js.ts new file mode 100644 index 00000000..cb09703b --- /dev/null +++ b/packages/jest-configs/src/js.ts @@ -0,0 +1,8 @@ +import { Config } from 'jest'; +import { coverage } from './layers/coverage'; + +const config: Config = { + ...coverage, +}; + +export default config; diff --git a/packages/jest-configs/src/layers/coverage.ts b/packages/jest-configs/src/layers/coverage.ts new file mode 100644 index 00000000..946704cb --- /dev/null +++ b/packages/jest-configs/src/layers/coverage.ts @@ -0,0 +1,13 @@ +import { Config } from 'jest'; + +export const coverage: Config = { + collectCoverage: true, + coverageDirectory: './coverage', + coveragePathIgnorePatterns: [ + 'node_modules/', + 'migrations/', + 'mikro-orm\\.config\\.ts$', + 'interfaces/', + 'types/', + ], +}; diff --git a/packages/jest-configs/src/ts-cjs.ts b/packages/jest-configs/src/ts-cjs.ts index 7afdf1b6..9c5742c0 100644 --- a/packages/jest-configs/src/ts-cjs.ts +++ b/packages/jest-configs/src/ts-cjs.ts @@ -1,7 +1,9 @@ import type { JestConfigWithTsJest } from 'ts-jest'; +import { coverage } from './layers/coverage'; const config: JestConfigWithTsJest = { preset: 'ts-jest/presets/default', + ...coverage, }; export default config; diff --git a/packages/jest-configs/src/ts-esm.ts b/packages/jest-configs/src/ts-esm.ts index 834b3491..91c08d81 100644 --- a/packages/jest-configs/src/ts-esm.ts +++ b/packages/jest-configs/src/ts-esm.ts @@ -1,8 +1,10 @@ import type { JestConfigWithTsJest } from 'ts-jest'; +import { coverage } from './layers/coverage'; export const config: JestConfigWithTsJest = { preset: 'ts-jest/presets/default-esm', moduleNameMapper: { '^(\\.{1,2}/.*)\\.js$': '$1', }, + ...coverage, };