diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 9f980af3c53d..a63d9f48fb08 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -19,6 +19,7 @@ "jest-haste-map": "^24.8.0", "jest-message-util": "^24.8.0", "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.3.0", "jest-resolve-dependencies": "^24.8.0", "jest-runner": "^24.8.0", "jest-runtime": "^24.8.0", diff --git a/packages/jest-core/src/watch.ts b/packages/jest-core/src/watch.ts index 5b97d1623709..3cbf0444d86c 100644 --- a/packages/jest-core/src/watch.ts +++ b/packages/jest-core/src/watch.ts @@ -15,6 +15,7 @@ import {formatExecError} from 'jest-message-util'; import {isInteractive, preRunMessage, specialChars} from 'jest-util'; import {ValidationError} from 'jest-validate'; import {Context} from 'jest-runtime'; +import Resolver from 'jest-resolve'; import {Config} from '@jest/types'; import { AllowedConfigOptions, @@ -275,6 +276,9 @@ export default function watch( isRunning = true; const configs = contexts.map(context => context.config); const changedFilesPromise = getChangedFilesPromise(globalConfig, configs); + // Clear cache for required modules + Resolver.clearCache(); + return runJest({ changedFilesPromise, contexts, diff --git a/packages/jest-resolve/src/defaultResolver.ts b/packages/jest-resolve/src/defaultResolver.ts index 42a0d31ee939..40e7949b12e4 100644 --- a/packages/jest-resolve/src/defaultResolver.ts +++ b/packages/jest-resolve/src/defaultResolver.ts @@ -44,6 +44,10 @@ export default function defaultResolver( }); } +export const clearResolverCache = () => { + checkedPaths.clear(); +}; + const REGEX_RELATIVE_IMPORT = /^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\\/])/; function resolveSync( diff --git a/packages/jest-resolve/src/index.ts b/packages/jest-resolve/src/index.ts index a3e09432dde2..b607ed8db450 100644 --- a/packages/jest-resolve/src/index.ts +++ b/packages/jest-resolve/src/index.ts @@ -12,7 +12,7 @@ import {sync as realpath} from 'realpath-native'; import chalk from 'chalk'; import nodeModulesPaths from './nodeModulesPaths'; import isBuiltinModule from './isBuiltinModule'; -import defaultResolver from './defaultResolver'; +import defaultResolver, {clearResolverCache} from './defaultResolver'; import {ResolverConfig} from './types'; type FindNodeModuleConfig = { @@ -79,6 +79,10 @@ class Resolver { this._modulePathCache = new Map(); } + static clearCache() { + clearResolverCache(); + } + static findNodeModule( path: Config.Path, options: FindNodeModuleConfig,