How to use absolute path with Typescript?

Viewed 7914

I have a project that written in Typescript on NodeJS. I am using relative path for my modules to import another. But this usage is getting dirty while project is growing. Because of that I want to convert relative paths to absolute path.

Here is my project folder structure:

src
├── controllers
├── repositories
├── services
│   ├── user.service.ts
|── tsconfig.json

I want to use import another module like below.

import userServices from "src/services/user.service";

tsconfig.json

"moduleResolution": "node",
"baseUrl": ".",
"paths": {
  "*": ["src/*"]
}

Above configurations is not working on my workspace.

Could you help me about that?

2 Answers

There is a TypeScript feature that allows this.

You can modify your src/tsconfig.json file to enable this, under compilerOptions, add the following:

{
  "compilerOptions": {
    // ...
    "paths": {
      "*": [
        "./*",
        "app/*",
        "../node_modules/*"
      ]
    }
}

You can obviously change the pattern key and values as needed. You add or remove folders, you can change the order, etc.

You can also choose a prefix instead of just * (especially if it cases problems), you can use something like ~/*, and your imports will then be all from '~/shared/sample' etc.

Add this in your tsconfig. Change the path as required by you

{
  "compilerOptions": {
    "baseUrl": "./src"
  }
}
Related