https://github.com/jpb06/ts-paths-transform
Transforming tsconfig paths for jest
https://github.com/jpb06/ts-paths-transform
jest typescript
Last synced: about 1 year ago
JSON representation
Transforming tsconfig paths for jest
- Host: GitHub
- URL: https://github.com/jpb06/ts-paths-transform
- Owner: jpb06
- Created: 2022-06-02T19:45:50.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-10T16:45:46.000Z (almost 2 years ago)
- Last Synced: 2025-04-23T03:46:13.919Z (over 1 year ago)
- Topics: jest, typescript
- Language: TypeScript
- Homepage:
- Size: 213 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ts-paths-transform
[](https://github.dev/jpb06/ts-paths-transform)


[](https://sonarcloud.io/summary/new_code?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/dashboard?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/dashboard?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/dashboard?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/dashboard?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/summary/new_code?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/summary/new_code?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/dashboard?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/summary/new_code?id=jpb06_ts-paths-transform)
[](https://sonarcloud.io/summary/new_code?id=jpb06_ts-paths-transform)

[](https://sonarcloud.io/dashboard?id=jpb06_ts-paths-transform)

A little helper transforming tsconfig paths to make jest config easier.
## ⚡ Install
```bash
yarn add -D ts-paths-transform
```
## ⚡ But why?
Grew tired of adding [`ts-jest`](https://github.com/kulshekhar/ts-jest) just to use its `pathsToModuleNameMapper` function.
## ⚡ Scenario
Let's imagine I want to test a Typescript codebase using jest. I'm using paths like so:
👇 tsconfig.json
```json
{
[...]
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@cool": ["src/cool/index.ts"],
"@api/*": ["src/api/*"]
}
}
}
```
Now in jest config, I could use the aforementioned `pathsToModuleNameMapper` function or set paths manually in `moduleNameMapper`:
👇 jest.config.ts
```typescript
const options: Config.InitialOptions = {
// [...]
moduleNameMapper: {
'^@cool$': 'src/cool/index.ts',
'^@api/(.*)$': 'src/api/$1',
},
transform: {
'^.+\\.[tj]sx?$': ['@swc/jest', {}],
},
};
```
Annoying 🥲
## ⚡ Using `transformTsPaths` function
Let's use the function this library exposes:
👇 jest.config.ts
```typescript
import { transformTsPaths } from `ts-paths-transform`;
import { compilerOptions } from './tsconfig.json';
const options: Config.InitialOptions = {
// [...]
moduleNameMapper: {
// [...]
...transformTsPaths(compilerOptions.paths)
},
transform: {
'^.+\\.[tj]sx?$': ['@swc/jest', {}],
},
};
```
### 🔶 Options
`transformTsPaths` accepts a second argument for options:
```typescript
const paths = transformTsPaths(compilerOptions.paths, {
prefix: 'blabla',
verbose: true,
});
```
#### 🧿 `prefix` - string
Prepends each path alias with a prefix:
```typescript
const tsConfigPaths = {
'@cool': ['src/cool/index.ts'],
'@api/*': ['src/api/*'],
};
const paths = transformTsPaths(tsConfigPaths, {
prefix: '/',
});
// Paths =
// '^@cool$': '/src/cool/index.ts',
// '^@api/(.*)$': '/src/api/$1',
```
#### 🧿 `verbose` - boolean
Displays transformed output:
```typescript
const tsConfigPaths = {
'@cool': ['src/cool/index.ts'],
'@api/*': ['src/api/*'],
};
const paths = transformTsPaths(tsConfigPaths, {
verbose: true,
});
```
👇 output:
```bash
ts-paths-transform 🚀 - 2 paths were found and transformed ✨
^@cool$: src/cool/index.ts
^@api/(.*)$: src/api/$1
```