Skip to content

Latest commit

 

History

History
103 lines (69 loc) · 2.82 KB

README.md

File metadata and controls

103 lines (69 loc) · 2.82 KB

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.