jest-node-exports-resolver
v1.1.6
Published
Jest resolver to handle node's 'exports' package entry points.
Downloads
41,147
Readme
Custom Jest resolver with node exports package entry points support
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.
Usage
Install:
yarn add jest-node-exports-resolver -D
Add custom resolver jest config option:
// jest.config.js
module.exports = {
// ...
resolver: 'jest-node-exports-resolver',
}
Known limitations
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.