[Nest.js] 절대경로로 import 하기

Woong·2022년 11월 29일
0

Nest.js, Node.js

목록 보기
9/30

절대경로 사용하기

  • 상대경로로도 import 할 수 있으나, 절대경로를 사용하기 위한 방법
    • @ 또는 ~

타입스크립트 소스에 반영

  • tsconfig.json 파일에 paths 로 지정한다.
    • 타입스크립트에서 import 할 때 절대경로를 사용할 수 있게된다.
...
"baseUrl": ".",
"paths" : {
  "~/*": ["./*"]
},
    ...
  • import 차이 비교
    //import { UserController } from './user.controller'
    import { UserController } from '~/src/user/user.controller'

jest 반영

  • 테스트코드의 경우 jest 를 이용하므로 package.json 파일을 수정
    • moduleNameMapper 를 추가한다.
  • ex) '~' 를 사용하고자 하는 경우
    • package.json 수정
    • <rootDir>test/ 경로이므로 ../ 이 추가되는 것에 주의
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node",
    "moduleNameMapper": {
      "^~/(.*)$": "<rootDir>/../$1"
    }
  }

jest E2E 테스트 반영

  • e2e 테스트의 경우 아래와 같이 test/jest-e2e.json 을 바라보기 때문에 해당 파일도 수정한다.
    • "test:e2e": "jest --config ./test/jest-e2e.json"
  • test/jest-e2e.json 수정
    • 동일하게 moduleNameMapper 를 추가한다.
    • 마찬가지로 <rootDir>test/ 경로이므로 ../ 이 추가되는 것에 주의
"moduleNameMapper": {
  "^~/(.*)$": "<rootDir>/../$1"
}

VSCode auto import 반영하기

  • Preferences > Settings > Import Module Specifier 항목을 non-relative 로 변경한다.
    • 위와 같이 변경할 경우 jsconfig.json, tsconfig.json 에서 정의한 baseUrl, paths 설정에 근거해 import된다.

reference

0개의 댓글