정화 코딩

[Node.js] NestJS 개발 환경 세팅하기 본문

Web Development

[Node.js] NestJS 개발 환경 세팅하기

jungh150c 2024. 10. 11. 17:01

icpc-sinchon-workspace의 폴더 구조

icpc-sinchon-workspace/
├── .github/
├── .vscode/
├── apps/
│   ├── admin-backend/
│   │   ├── package.json
│   │   └── ...
│   └── admin-frontend/
│       ├── package.json
│       └── ...
├── libs/
├── .gitignore
├── package-lock.json
└── package.json

여기서 기존의 admin-backend 폴더의 이름을 admin-old-backend로 바꾸고 새로운 nest.js 프로젝트(폴더)를 admin-backend이라는 이름으로 만드려고 한다.

최상위 디렉토리에서 npm 설치

...\icpc-sinchon-workspace> npm i

이렇게 하니 다음과 같은 오류가 났다.

npm error code EUNSUPPORTEDPROTOCOL
C:\Users\ShinJunghwa\Documents\GitHub\icpc-sinchon-workspace>npm i
npm error code EUNSUPPORTEDPROTOCOL
npm error Unsupported URL Type "workspace:": workspace:*

npm error A complete log of this run can be found in: C:\Users\ShinJunghwa\AppData\Local\npm-cache\_logs\2024-10-11T05_57_37_041Z-debug-0.log

package.json에서 패키지의 버전 필드에 workspace:*로 설정되어 있는 부분을 구체적인 버전 번호로 바꿔야 한다고 한다. 그래서 다음과 같이 수정했다. 

 

admin-frontend/package.json와 admin-old-backend/package.json에서 위와 같이 수정해주었다.

...\icpc-sinchon-workspace> npm i

그 후 다시 npm 설치해주니 정상적으로 설치되었다.

NestJS CLI 설치 및 새 프로젝트 생성

...icpc-sinchon-workspace\apps> npm i -g @nestjs/cli  # nestJS CLI 설치
...icpc-sinchon-workspace\apps> nest new admin-backend  # 새 프로젝트 생성

먼저 nestJS CLI를 설치한 후 admin-backend라는 폴더 명으로 새로운 프로젝트를 생성한다. 패키지 매니저를 설정할 수 있는데, 나는 npm을 선택해주었다. 

이 때 나는 admin-backend 폴더 전체가 깃에 올라가지 않는 문제가 발생하였는데, 다음과 같은 과정으로 해결할 수 있었다.

...\icpc-sinchon-workspace> rmdir /S /Q apps\admin-backend\.git
...\icpc-sinchon-workspace> git add .

apps/admin-backend/ 가 서브모듈이 아니라 별도의 Git 저장소로 설정되어 있어서 그런 것 같다. 즉, 폴더 내에 있는 .git 폴더를 삭제해주면 된다. 그리고 다시 파일을 git에 추가해준다.

성공적으로 프로젝트가 만들어진 모습이다.

 


pnpm이란?

pnpm은 Performant Node Package Manager의 약자로, 기존 npm의 단점을 보완한 패키지 매니저이다. npm보다 명령어 처리 속도, 패키지 설치 속도가 빠르고 패키지를 중복으로 저장하지 않아 용량이 절감된다는 장점이 있다. 

알고보니 package.json 등의 파일이 pnpm 기준으로 만들어진 것이라서 오류가 난 것이었다. 그래서 pnpm을 새롭게 설치해주고 pnpm을 통해서 패키지들을 다운 받으니 package.json에서 패키지의 버전 필드에 workspace:*로 설정되어 있는 부분을 수정해주지 않아도 정상적으로 설치가 되었다. 

npm install -g pnpm # pnpm 설치
pnpm install # pnpm으로 패키지 설치

기존 npm과 사용법이 매우 비슷하다고 한다. 

 

Comments