This package is no longer needed since jest 29, so there is no need in active maintenence.
This package aims to bring node exports package entry points support to Jest, i.e.:
// some.test.js
import { Foo } from 'my-package/submodule';
import { Bar } from '@my-scope/package/submodule';
// ...
This is heavily discussed in the following issue #9771. Several alternatives proposed, such as using enhanced-resolve, writing own resolver based on firebase-jest-testing resolver, using custom resolver written for esfx.
This package is a slightly generalized version of the firebase-jest-testing self-resolver:
- test import path for referencing submodule (including
@scoped/
packages); - try to load that package's
package.json
; - check for
exports
field, try to find 'node', 'require' or 'default' (in case oftype !== 'module'
) condition; - reuse
defaultResolver
with updated target.
Install:
yarn add jest-node-exports-resolver -D
Add custom resolver jest config option:
// jest.config.js
module.exports = {
// ...
resolver: 'jest-node-exports-resolver',
}
Node.js supports two flavours of 'exports':
- conditions list: when all the entries contain keywords ('import', 'require', 'node' etc.);
- entry points list: when all the entries contain submodule paths ('.', './submodule-a', './submodule-b/*' etc.).
Only the latter one is supported. Feel free to send a PR with conditions list support.