ts-jest-resolver
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
yarn add ts-jest-resolver
After installation, you can set "ts-jest-resolver"
as jest's resolver.
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';
-
It tries to resolve to a path with ".tsx";
import EventEmitter from './EventEmitter.tsx';
-
If no file was found, it tries to resolve to a path with ".ts";
import EventEmitter from './EventEmitter.ts';
-
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';
-
It tries to resolve to paths with ".mts" and ".cts".
Ex.
import parse, { Tokenizer } from './parser.mts'
import { discoverPath } from './getFiles.cts';
-
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.