From 96ee934888042167dd23fd01958bbf97bb01a0de Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sun, 17 Oct 2021 18:46:07 +0200 Subject: [PATCH] do not add main if there is `index` in root --- packages/jest-resolve/src/defaultResolver.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/jest-resolve/src/defaultResolver.ts b/packages/jest-resolve/src/defaultResolver.ts index c34aa8f5dc10..024d61b5c38b 100644 --- a/packages/jest-resolve/src/defaultResolver.ts +++ b/packages/jest-resolve/src/defaultResolver.ts @@ -5,6 +5,7 @@ * LICENSE file in the root directory of this source tree. */ +import {resolve} from 'path'; import * as fs from 'graceful-fs'; import pnpResolver from 'jest-pnp-resolver'; import {Opts as ResolveOpts, sync as resolveSync} from 'resolve'; @@ -175,11 +176,24 @@ function createPackageFilter( } } - return function packageFilter(pkg: PkgJson, ...rest) { + return function packageFilter(pkg: PkgJson, path) { let filteredPkg = pkg; if (userFilter) { - filteredPkg = userFilter(filteredPkg, ...rest); + filteredPkg = userFilter(filteredPkg, path); + } + + if (filteredPkg.main) { + return filteredPkg; + } + + const indexInRoot = resolve(path, './index.js'); + + // if the module contains an `index.js` file in root, `resolve` will request + // that if there is no `main`. Since we don't wanna break that, add this + // check + if (isFile(indexInRoot)) { + return filteredPkg; } return {