개발/nodejs

nodejs + typescript 버전 heroku로 푸쉬하기

kwony 2021. 10. 27. 21:46

 

nodejs를 typescript로 짜고 로컬에서 테스트 할 때는 아래 처럼 nodemon 명령어를 사용하면 된다. 그런데 heroku 서버 상에서는 이 명령어를 사용할 수 없다. 

nodemon --exec ts-node src/index.ts

 

heroku 서버상에서도 typescript를 사용하기 위해선 typescript를 javascript로 변환하는 과정이 필요하다. package.json을 수정하면 heroku에 push 하는 과정에서 typescript를 javascript로 빌드하는 과정을 추가할 수 있다. 아래 코드에서 postinstall 속성이 npm run build로 되어 있는데 이 과정에서 heroku에 설치하면서 최종 명령어로 불리게 된다. build 속성을 tsc로 두면 타입 스크립트의 컴파일이 가능하다. 참고로 tsc로 빌드하기 위해선 tsconfig.json 파일이 필요하다.

 

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node dist/index.js",
    "start-local": "nodemon --exec ts-node src/index.ts",
    "build": "tsc",
    "postinstall": "npm run build"
  },

 

테스트로 로컬에서 postinstall 에 있는 명령어, npm run build 를 실행해보자. typescript를 javascript로 변환하는 작업이 실행될 것이다. 성공적으로 빌드 됐다면 프로젝트 루트에 dist 폴더가 생기고 내부에 javascript로 빌드된 파일이 생성된다. 로컬에서 node dist/index.js를 실행하면 typescript를 실행할 때와 동일하게 애플리케이션이 실행하게 된다.

 

user@kwony base % ls dist
application.js          clients                 const                   environment.js.map      index.js.map            models                  repository              service                 utils
application.js.map      configs                 environment.js          index.js                middleware              push                    routers                 socket