import { AuthResDto } from '../../src/auth/dto/response.dto';
import { AuthService } from '../../src/auth/auth.service';
import { AuthResDto } from '@auth/dto/response.dto';
import { AuthService } from '@auth/accounts.service';
./
├── package.json
├── src
│ ├── auth
│ │ ├── auth.service.ts
│ │ └── auth.service.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── ormconfig.ts
├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
├── tsconfig.json
├── tsconfig.paths.json
└── tsconfig.paths.json
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@root/*": ["./src/*"],
"@auth/*": ["./src/auth/*"]
}
}
}
{
"extends": "./tsconfig.paths.json",
... (나머지 설정)
}
ormconfig.ts
파일에서 alias를 사용하기 때문에 아래와 같이 옵션을 추가했습니다.yarn
또는 npm
을 통해서 typeorm cli를 실행 시킬 때 추가 하는 기본적인 명령에 -r tsconfig-paths/register
옵션을 추가합니다.// package.json
{
...
"scripts": {
"typeorm": "node -r tsconfig-paths/register -r ts-node/register ./node_modules/typeorm/cli.js --config src/ormconfig.ts",
"migration:create": "yarn typeorm migration:create",
"migration:run": "yarn typeorm migration:run",
"migration:revert": "yarn typeorm migration:revert",
}
...
}
yarn test
를 이용해 unit 테스트 할 때 에러가 발생한다면, 아래 설정을 추가해야 합니다.src/auth/auth.service.spec.ts
파일과 같은 unit 테스트 파일에서 alias를 사용할 수 있습니다.package.json
과 살짝 다르니 주의하세요.src
가 빠진 이유는 rootDir이 기본적으로 src
로 설정되어 있기 때문입니다.// package.json
{
...
"jest": {
...
"rootDir": "src",
"moduleNameMapper": {
"^@root/(.*)$": "<rootDir>/$1",
"^@auth/(.*)$": "<rootDir>/auth/$1"
}
...
}
...
}
yarn test:e2e
실행 시 기본적으로 이 파일의 설정을 따릅니다. 그래서 e2e 테스트에 alias를 사용하려면 해당 파일에 설정을 추가해야합니다.../src
가 추가 된 이유는 e2e 테스트 파일에서의 rootDir
은 test
디렉터리를 의미합니다. 그래서 실행 코드가 있는 src
디렉터리를 가리키기 위해 ../src
을 추가해 줘야 합니다.{
...
"rootDir": ".",
"moduleNameMapper": {
"^@root/(.*)$": "<rootDir>/../src/$1",
"^@auth/(.*)$": "<rootDir>/../src/auth/$1"
}
...
}
yarn build
실행 후 dist 디렉터리에 나오는 파일 중 .d.ts
파일에는 alias가 그대로 있는 것을 확인할 수 있다.yarn add -D tsc-alias
"scripts": {
"build": "nest build && tsc-alias",
},
글 잘 읽었습니다 :)
궁금한 것이 하나 있는데 혹시 vsc에서 auto import될 때 tsconfig path에서 설정한대로 할 수 있게 하는 방법이 있을까요?
relative path는 자동으로 알아서 해주는데 tsconfig path 설정으로 자동 임포트하게 하는 방법을 못찾겠네요 ㅎㅎ;; 아니면 이런경우에 다들 손으로 직접 경로를 작성하시나요?
혹시나 저와 같은 삽질을 겪고 계실 분들을 위해 댓글 남깁니다.(아 다시 생각해도 멍청 ㅠㅠ)
저는 타입스크립트 사용을 좋아해서 타입스크립트 최신버전을 적용하려고 시도 했었는데요.
단순하게 yarn upgrade typescript@latest 로 최신 버전(@5.x.x)을 설치했고
nest start를 통해 실행한 결과 paths를 인식하지 못해 start시 수행하는 build가 경로 오류로 인해 실행되지 못하는 상황을 겪고 있었습니다.
여러 삽질을 했지만 결론은 간단했습니다.
저처럼 yarn을 쓰신다면
@nestjs/cli의 버전을 전역(global), 프로젝트(local) 둘다 체크를 해보시고 8.x.x 버전을 사용하고 계시다면
전역에선 yarn global upgrade-interactive --latest 를 통해 @nestjs/cli를 선택적으로 업그레이드 해주시고
로컬에선 yarn upgrade-interactive --latest를 통해 @nestjs/cli, @nestjs/schematics, @nestjs/testing 를 업그레이드 해주시면 잘 돌아갈 겁니다.
언제 설치 했는지는 기억이 잘 안나지만 1년 반쯤 전에 nest 공부하려다 설치해둔 버전이 8.x.x 버전이었고
이버전을 저는 그대로 사용하는 바람에 nest new 명령어로 프로젝트를 생성했더니 8.x.x 버전대로 설치가 되었던 겄이 었습니다.
아 참 바보 멍청이 같은 ...
부끄럽지만 다른 분들에게 아니 단한 분이라도 도움이 될수 있었으면 좋겠습니다.
허허 nest 쓰시는 분 발견했네요 ㅎㅎ 한국에서도 있군용 !!