Skip to content

A resolver for jest that uses the same strategy as TS when resolving files with JavaScript extensions (".js", ".jsx", ".cjs" and ".mjs"). It works pretty well with ts-jest or babel with @babel/preset-typescript.

License

Notifications You must be signed in to change notification settings

VitorLuizC/ts-jest-resolver

Repository files navigation

ts-jest-resolver

Build Status License

A resolver for jest that uses the same strategy as TS when resolving files with JavaScript extensions (".js", ".jsx", ".cjs" and ".mjs"). It works pretty well with ts-jest or babel with @babel/preset-typescript.

  • 📦 Distributions in ESM and CommonJS.
    • Supports both Node.js ESM (import/export) and CommonJS (require/module.exports).
  • ⚡ Lightweight:
    • It's bundled using rollup.js.
  • 🔋 Bateries included:
    • It just depends on jest-resolver types.
  • ✅ Safe:

Usage

This library is published in the NPM registry and can be installed using any compatible package manager.

npm install ts-jest-resolver --save

# For Yarn, use the command below.
yarn add ts-jest-resolver

After installation, you can set "ts-jest-resolver" as jest's resolver.

// jest.config.js

module.exports = {
  preset: "ts-jest",
  resolver: "ts-jest-resolver",
};

How it works

It changes module's extension to resolve in the same way as TypeScript.

How it works with ".js" and ".jsx" extensions

When importing from path with JavaScript extension (".js" or ".jsx"):

import EventEmitter from './EventEmitter.js';
  1. It tries to resolve to a path with ".tsx";

    import EventEmitter from './EventEmitter.tsx';
  2. If no file was found, it tries to resolve to a path with ".ts";

    import EventEmitter from './EventEmitter.ts';
  3. If no file was found, it resolves to original path (with ".js" or ".jsx").

    import EventEmitter from './EventEmitter.js';

How it works with ".mjs" and ".cjs" extensions

When importing from path with ES or CommonJS modules (".mjs" and ".cjs" respectively):

Ex.

import parse, { Tokenizer } from './parser.mjs'
import { discoverPath } from './getFiles.cjs';
  1. It tries to resolve to paths with ".mts" and ".cts".

    Ex.

    import parse, { Tokenizer } from './parser.mts'
    import { discoverPath } from './getFiles.cts';
  2. If no files were found, it resolves to original paths (with ".mjs" and ".cjs").

    Ex.

    import parse, { Tokenizer } from './parser.mjs'
    import { discoverPath } from './getFiles.cjs';

License

Released under MIT License.

About

A resolver for jest that uses the same strategy as TS when resolving files with JavaScript extensions (".js", ".jsx", ".cjs" and ".mjs"). It works pretty well with ts-jest or babel with @babel/preset-typescript.

Topics

Resources

License

Stars

Watchers

Forks