https://github.com/vitorluizc/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.
https://github.com/vitorluizc/ts-jest-resolver
jest jest-resolver ts-jest ts-jest-resolver typescript
Last synced: 8 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/vitorluizc/ts-jest-resolver
- Owner: VitorLuizC
- License: mit
- Created: 2021-03-21T21:29:50.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-20T03:18:58.000Z (over 2 years ago)
- Last Synced: 2024-12-22T18:57:08.513Z (12 months ago)
- Topics: jest, jest-resolver, ts-jest, ts-jest-resolver, typescript
- Language: TypeScript
- Homepage:
- Size: 439 KB
- Stars: 60
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ts-jest-resolver
[](https://travis-ci.org/VitorLuizC/ts-jest-resolver)
[](./LICENSE)
A resolver for [`jest`](https://jestjs.io/) 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`](https://kulshekhar.github.io/ts-jest/) or [`babel`](https://babeljs.io/) with [`@babel/preset-typescript`](https://babeljs.io/docs/en/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:
- Made with ESLint, TypeScript as strict as possible.
- Unit tests with Jest.
- Like `ts-jest`, `ts-jest-resolver` [uses itself as jest's resolver](https://github.com/VitorLuizC/ts-jest-resolver/commit/a2cc8f6482250380c2c735bf8827eb64082d5ef6).
## Usage
This library is published in the NPM registry and can be installed using any compatible package manager.
```sh
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.
```js
// 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"):
```js
import EventEmitter from './EventEmitter.js';
```
1. It tries to resolve to a path with ".tsx";
```js
import EventEmitter from './EventEmitter.tsx';
```
2. If no file was found, it tries to resolve to a path with ".ts";
```js
import EventEmitter from './EventEmitter.ts';
```
3. If no file was found, it resolves to original path (with ".js" or ".jsx").
```js
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.
```ts
import parse, { Tokenizer } from './parser.mjs'
import { discoverPath } from './getFiles.cjs';
```
1. It tries to resolve to paths with ".mts" and ".cts".
Ex.
```ts
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.
```ts
import parse, { Tokenizer } from './parser.mjs'
import { discoverPath } from './getFiles.cjs';
```
## License
Released under [MIT License](./LICENSE).