jest-node-exports-resolver

v1.0.4
Jest resolver to handle node's 'exports' package entry points.

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 of type !== '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.

Metadata

  • MIT
  • Whatever
  • Gleb Kochergin
  • released 8/20/2021

Downloads

Maintainers