2.0.3 ā€¢ Published 1 year ago

ts-paths-transform v2.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

ts-paths-transform

Open in Visual Studio Code npm bundle size Github workflow Quality Gate Status Maintainability Rating Security Rating Reliability Rating Coverage Lines of Code Technical Debt Code Smells Bugs Vulnerabilities Snyk Vulnerabilities for npm package Duplicated Lines (%) Last commit

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
2.0.3

1 year ago

2.0.2

1 year ago

2.0.1

1 year ago

2.0.0

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.16

2 years ago