ts-node로 파일 실행 시킬 경우의 d.ts

00_8_3·2021년 12월 17일
3

ts-node와 typeRoots

TypeScript를 js로 컴파일 한 경우 문제가 없지만

빠르게 작업하기 위해 dev 환경에서는 ts-node로 컴파일 없이 작업 하려 했더니 문제가 생겼다.

tsconfig.json에 명시한 typeRoots가 작동을 안했던 것 이다.

ts-node 문서를 찾아보니 --files 옵션을 사용 하지 않는 경우
tsconfig.json의 files, include, exclude가 default 로false 된다고 한다.

추가 --files 옵션을 사용하지 않으면 "files":[], "include": [] 로 override 된다.

tsc --traceResolution 옵션을 통해 추적 할 수 있다.

해결

둘 중 하나를 적용하면 된다.

1. tsconfig.json 수정

{
  "compilerOptions": {
	...
  },
  "ts-node": {
    "files": true
  }
}

2. package.json 스크립트 수정

"scripts": {
    "build": "tsc",
    "dev": ": ts-node --files src/@types/index index.ts"
  },

ts-node 7 버전이상 부터.

referrence

https://stackoverflow.com/questions/51610583/ts-node-ignores-d-ts-files-while-tsc-successfully-compiles-the-project

https://github.com/TypeStrong/ts-node#typechecking

https://github.com/TypeStrong/ts-node/issues/1132#issuecomment-716642560

https://techbless.github.io/2020/03/12/ts-node%EC%97%90%EC%84%9C-typeRoots-%EC%84%A4%EC%A0%95%EC%9D%B4-%EC%9E%91%EB%8F%99%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0/

https://medium.com/naver-fe-platform/%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EA%B0%80-%EB%AA%A8%EB%93%88-%ED%83%80%EC%9E%85-%EC%84%A0%EC%96%B8%EC%9D%84-%EC%B0%B8%EC%A1%B0%ED%95%98%EB%8A%94-%EA%B3%BC%EC%A0%95-5bfc55a88bb6

4개의 댓글

comment-user-thumbnail
2022년 6월 27일

감사합니다 정확히 제가 찾던 문제인데 많은 도움이 되었습니다

1개의 답글
comment-user-thumbnail
2022년 9월 15일

감사합니다. 덕분에 해결했습니다!

1개의 답글