2.0.3 ā¢ Published 1 year ago
ts-paths-transform v2.0.3
ts-paths-transform
A little helper transforming tsconfig paths to make jest config easier.
ā” Install
yarn add -D ts-paths-transform
ā” But why?
Grew tired of adding 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
{
[...]
"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
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
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:
const paths = transformTsPaths(compilerOptions.paths, {
prefix: 'blabla',
verbose: true,
});
š§æ prefix
- string
Prepends each path alias with a prefix:
const tsConfigPaths = {
'@cool': ['src/cool/index.ts'],
'@api/*': ['src/api/*'],
};
const paths = transformTsPaths(tsConfigPaths, {
prefix: '<RootDir>/',
});
// Paths =
// '^@cool$': '<RootDir>/src/cool/index.ts',
// '^@api/(.*)$': '<RootDir>/src/api/$1',
š§æ verbose
- boolean
Displays transformed output:
const tsConfigPaths = {
'@cool': ['src/cool/index.ts'],
'@api/*': ['src/api/*'],
};
const paths = transformTsPaths(tsConfigPaths, {
verbose: true,
});
š output:
ts-paths-transform š - 2 paths were found and transformed āØ
^@cool$: src/cool/index.ts
^@api/(.*)$: src/api/$1