UNPKG

@nestjs/schematics

Version:

Nest - modern, fast, powerful node.js web framework (@schematics)

50 lines (49 loc) 2.27 kB
import { addPackageJsonDependency, getPackageJsonDependency, } from '../../../utils/dependencies.utils.js'; import { parseMajor, parseMajorMinor, } from '../upgrade.utils.js'; const JEST_V30 = '^30.0.0'; const TYPES_JEST_V30 = '^30.0.0'; const TS_JEST_FOR_JEST_30 = '^29.4.0'; export function migrateTestRunner(report) { return (tree) => { const jest = getPackageJsonDependency(tree, 'jest'); if (!jest) { return tree; } const jestMajor = parseMajor(jest.version); if (jestMajor !== null && jestMajor < 30) { addPackageJsonDependency(tree, { ...jest, version: JEST_V30, overwrite: true, }); report.change(`Updated "jest" from "${jest.version}" to "${JEST_V30}"`); } const typesJest = getPackageJsonDependency(tree, '@types/jest'); const typesJestMajor = parseMajor(typesJest?.version); if (typesJest && typesJestMajor !== null && typesJestMajor < 30) { addPackageJsonDependency(tree, { ...typesJest, version: TYPES_JEST_V30, overwrite: true, }); report.change(`Updated "@types/jest" from "${typesJest.version}" to "${TYPES_JEST_V30}"`); } const tsJest = getPackageJsonDependency(tree, 'ts-jest'); const tsJestVersion = parseMajorMinor(tsJest?.version); if (tsJest && tsJestVersion && (tsJestVersion[0] < 29 || (tsJestVersion[0] === 29 && tsJestVersion[1] < 4))) { addPackageJsonDependency(tree, { ...tsJest, version: TS_JEST_FOR_JEST_30, overwrite: true, }); report.change(`Updated "ts-jest" from "${tsJest.version}" to "${TS_JEST_FOR_JEST_30}" (first release supporting Jest 30)`); } report.warn('Jest: the NestJS 12 packages are ESM-only and Jest can only require() ESM modules on Node.js v24.9+ ' + '(older versions fail with ERR_REQUIRE_ASYNC_MODULE). Run your test suite on Node.js 24.9+, ' + 'or consider migrating to Vitest, the default test runner for new NestJS 12 projects.'); return tree; }; }