Typescript + Jest 절대경로 설정

shelly·2021년 5월 25일
2

문제 의식

src
ㄴ server.ts
> api
  > controllers
  	> auth
      ㄴ auth.controller.ts
  • auth.controller.ts 에서 server.ts에 접근하여 server를 import 하고자 한다.
import server from '../../../server.ts';
  • 3 단계 위의 폴더에 있기 때문에 ../../../와 같은 경로지정을 해야한다.
  • 만약 auth.controller.ts가 더 깊이 있었다면....?
  • server.ts 에 접근하기 위해서 ../을 중첩하여 사용하다보면 휴먼에러😱가 발생하기 마련이다.
  • 자동완성이 안되면 더더더더더더욱 위험하다.

import server from '@src/server.ts';
  • @srcsrc 폴더를 가르킨다.
  • 위의 코드처럼 절대경로를 지정할 수 있다면, 어느 위치에있는 파일이든 server.ts 에 접근하는 방법은 동일하다!

방법

0. 참고

1. config 설정

in tsconfig.json

{
  ...
  "compilerOptions": {
   	...
    "baseUrl": ".",
    "paths": {
      "@src/*": ["src/*"]
    }
  }
  ...
}
  • paths 에 추가하고싶은 절대경로를 선언한다.
  • config 설정을 한다면, 컴파일되어 자동완성 등의 기능을 사용할 수 있지만, 아직은 node가 이해할 수 없는 형태이기 때문에 추가적인 작업이 필요하다.

2.

3. Jest 설정

in jest.config.js

module.exports = {
  ...
  moduleNameMapper: {
    '^@src(.*)$': '<rootDir>/src$1'
  }
  ...
};
  • 임의로 jest를 실행할 때도 @src가 잘 인식될 수 있도록, 위와 같이 name mapper을 설정해준다.
  • 그런데 $1은 무슨 뜻일까...?

0개의 댓글