1. NestJS 시작하기
$ npm i -g @nestjs/cli
cli 버전으로 설치하는 이유는 cli 버전을 통해 nest가 지원하는 '프로젝트 초기화' 기능을 활용하기 위함이다. 다시 말해, @nestjs/cli를 설치한다고 해서 nest의 실질적인 패키지가 다운로드 되지는 않는다. 이는 위 코드를 입력한 뒤 성공적으로 설치가 끝나더라도 package.json 파일상에서는 그 무엇도 변하지 않았다는 점을 통해서 확인할 수 있다.
참고로 -g는 global의 약자이다.
그렇다면 이제 진짜 nest를 다운받아보자. 아래의 코드를 입력하면, nest가 지원하는 '프로젝트 초기화' 기능이 작동하여, nest를 통해서 서버를 빌드하는데 있어 필요한 모든 기본적인 툴과 세팅이 제공된다. 가령, @nestjs/core 라던가, typescript 및 @types/node, @types/express 등이 그 과정에서 설치된다. 즉, @nestjs/cli는 React로 따지자면 CRA와 같은 기능을 한다.
참고로 아래의 코드를 입력하면 npm을 통해 설치할지 yarn을 통해 설치할지, pnpm을 통해 설치할지 물어보는데 편한 툴을 선택하면 된다. (npm vs. yarn vs. pnpm은 다음 기회에 다뤄보도록 하겠다.)
$ nest new <프로젝트명>
공식 문서에서 프로젝트명으로 표기하고 있고, package.json 상의 이름이나 기타 세팅들에서 '프로젝트명'을 활용하기 때문에 나도 프로젝트명으로 표기하였다. 다만 여기서 주의할 점은 해당 '프로젝트명'으로 폴더가 생성되면서 기본 세팅이 초기화된다는 점이다. 따라서, A 폴더에서 위 코드를 실행하면, 결국 A 디렉토리의 하위에 '프로젝트명'으로 생성된 새로운 폴더가 생기고 거기에 새로운 서버가 세팅되는 셈.
어쨌거나 위 코드를 입력하는 것만으로도 이미 서버는 완성되었다.
$ npm run start
위 코드를 입력한 뒤, http://localhost:3000/ 로 접속하면, 'Hello World!' 를 볼 수 있다!
2. Express 프로젝트를 Nest로 마이그레이션 하려면
만약 나처럼 기존의 express 프로젝트를 Nest로 마이그레이션 하고 싶은 경우라면 한 가지 문제가 생긴다. 기본적으로 nest new 명령어는 신규 프로젝트의 생성을 가정한 채 세팅이 이루어지므로, git 정보가 담긴 .git 폴더도 함께 생성되기 때문에 '프로젝트명' 폴더로 이동시 git이 새로 시작된다는 점이다.
이 경우 당황할 필요 없이 새로 생긴 '프로젝트명' 폴더의 하위에 존재하는 .git 폴더를 지워주면 해결된다.
$ rm -rf .git
주의할 점은 기존 프로젝트 폴더가 아닌 새로 생긴 '프로젝트명' 폴더로 가서 실행해야 한다는 점. 자칫 잘못하여 기존 프로젝트 경로에서 실행하면 기존의 git정보가 날아가버린다. (물론 지워지더라도 remote 저장소에서 받아오면 되니까 큰 문제는 아니겠지만..)
어쨌거나
- 기존 프로젝트에서 nest 빌드를 위한 새로운 브랜치를 만든 뒤,
- $ nest new <프로젝트명>으로 nest 프로젝트를 초기화 시키고,
- 새로 생긴 프로젝트명 경로로 이동한 뒤, .git 폴더를 지워서 기존 프로젝트의 git 정보에 통합시킨 후,
- 평소와 같이 git 버전 관리를 진행하며 개발하면 된다.
- 릴리쓰 단계까지 코드 작성이 완료되면 기존 BE 코드를 Nest 코드로 갈아끼워 주면 끝!
- nest를 위한 브랜치 상에서 기존 BE 코드 없이 Nest 만으로 작동하는 것이 최종 확인되면 브랜치를 merge 해주면 된다.
다음 시간에는 Nest의 기본 구조와 문법에 대해 알아보겠다.
'Learning-Log > Computer Science' 카테고리의 다른 글
[ReactJS] styled-components와 함께 하는 즐거운 ReactJS (0) | 2022.07.12 |
---|---|
[NestJS] NestJS, 한 번 빠지면 벗어날 수 없는 마성의 늪(3) : NestJS를 이해하기 위한 First Class Function, Closure 그리고 Decorator (0) | 2022.07.11 |
[WSL] Ubuntu에서 현재 디렉토리를 윈도우 탐색기로 열기 (0) | 2022.07.11 |
[NestJS] NestJS, 한 번 빠지면 벗어날 수 없는 마성의 늪(1) : 소개 (0) | 2022.07.11 |
Tistory의 코드블럭을 이쁘게 만들어보자 : 코드블럭 테마 (highlight.js) 적용방법 (0) | 2022.07.06 |