Skip to content
This repository has been archived by the owner on Jan 6, 2024. It is now read-only.

k-g-a/jest-node-exports-resolver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Archived

This package is no longer needed since jest 29, so there is no need in active maintenence.

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.