Skip to content

[BE] 1107(화) 개발 기록 ‐ 프로젝트 세팅

송준섭 edited this page Nov 8, 2023 · 1 revision

NestJS + Yarn Berry

설정 방법

  1. upstream 주소 등록
git remote add upstream [Repository 주소]
# [Repository 주소] : https://github.com/boostcampwm2023/web16-B1G1
  1. yarn 설치
brew install yarn

Nest.js에 Yarn Berry + Zero Install 적용하기

  1. 프로젝트 폴더(WEB16-B1G1/BE/)에서 nest init project 설치
nest new .
  1. 같은 폴더에서 yarn berry 활성화
yarn set version berry
  1. yarn —version으로 정상적으로 버전이 변경되었는지 확인
yarn --version

정상적으로 변경되었다면 아래와 같이 변경된다(현재 환경의 경우 4.0.1)

스크린샷 2023-11-07 오후 9 21 35
  1. .gitignore에 yarn 관련 파일 등록하여 git 추적에서 제거
# yarn
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions
  1. node_modules 폴더 삭제
스크린샷 2023-11-07 오후 9 25 50
  1. yarn install을 통해 다시 의존성 설치 → 이제 yarn berry에 의해 node_modules/가 아닌 .yarn/releases/yarn-[version].cjs 에 zip파일 형식으로 설치됨
yarn install
스크린샷 2023-11-07 오후 9 37 17
  1. .yarnrc.yml에 nodeLinker 속성을 주석 처리
# nodeLinker: node-modules

yarnPath: .yarn/releases/yarn-4.0.1.cjs
  1. 다시 남아있는 node_modules/ 폴더를 지우고 yarn install 하면 끝
스크린샷 2023-11-07 오후 9 42 31
yarn install

결과 확인 (nest init 프로젝트 실행)

yarn run start:dev
스크린샷 2023-11-07 오후 9 45 29 스크린샷 2023-11-07 오후 9 45 39

node_modules/ 가 없는데도 프로젝트가 정상적으로 잘 동작하는 것을 확인할 수 있다!


트러블 슈팅

nest new로 nest 프로젝트를 생성하는 도중 에러가 발생하였다.

일단 yarn을 berry 버전으로 세팅해주었다.

$ yarn set version berry  // yarn berry로 버전 세팅
$ yarn --version  // yarn 버전 출력
4.0.1  // yarn 버전

그 후 nest 프로젝트를 생성하고 실행해 보려고 하였다.

$ nest new .  // 프로젝트 생성

그렇게 하니 다음과 같은 에러 메세지가 발생하였다.

Failed to execute command: yarn install --silent

일단 프로젝트 파일들은 생성이 됐길래 nest 프로젝트를 실행해보려 하였다.

$ nest start

그러니 다음과 같이 패키지가 설치되지 않았다는 오류가 발생하였다.

src/app.controller.ts:1:33 - error TS2307: Cannot find module '@nestjs/common' or its corresponding type declarations.

1 import { Controller, Get } from '@nestjs/common';
                                  ~~~~~~~~~~~~~~~~
src/app.module.ts:1:24 - error TS2307: Cannot find module '@nestjs/common' or its corresponding type declarations.

1 import { Module } from '@nestjs/common';
                         ~~~~~~~~~~~~~~~~
src/app.service.ts:1:28 - error TS2307: Cannot find module '@nestjs/common' or its corresponding type declarations.

1 import { Injectable } from '@nestjs/common';
                             ~~~~~~~~~~~~~~~~
src/main.ts:1:29 - error TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.

1 import { NestFactory } from '@nestjs/core';
                              ~~~~~~~~~~~~~~

Found 4 error(s).

그래서 일단 패키지들을 설치해주기 위해 yarn install을 시도해보려고 하였다.

그러나 다음과 같은 에러가 발생하고 설치가 되지 않았다.

Usage Error: The nearest package directory (/Users/songjs/projects/boostcamp/membership/web16-B1G1/BE) doesn't seem to be part of the project declared in /Users/songjs.

이유를 찾아보니 /Users/songjs 경로에 .yarnrc.yml 등 yarn 관련 파일들이 설치가 되어있었기 때문이었다.

처음 yarn set version berry 커맨드를 실행한 위치가 /Users/songjs 여서 그런 것 같았다.

yarn set version berry를 실행하면 yarn 자체의 버전이 바뀌는 줄 알았어서 어느 위치에서 커맨드를 실행해도 괜찮을 줄 알았기 때문에 생긴 문제였다.

그래서 /Users/songjs에 있는 yarn 관련 파일들(.yarn, .yarnrc.yml, ,,)을 삭제한 후 다시 nest 프로젝트 폴더(/Users/songjs/projects/boostcamp/membership/web16-B1G1/BE)로 이동해 yarn set version berry를 실행하였다.

또한 우리는 yarn berryyarn add @nestjs/cli 이런 식으로 nest cli를 새로 설치해야하나? 라는 생각도 해서 yarn dlx 등 여러 명령어로 설치를 시도했으나 실패했다.

아마 @nestjs/cli 에서 nest new 로 프로젝트를 생성할 때 yarn berry 패키지 매니저를 지원하지 않는 것 같았다.

그래서 다시 yarn berry에 대한 정보를 찾아본 결과 다음과 같은 결론이 나왔다.

일단 nest new 커맨드를 yarn 패키지 매니저를 사용하는 옵션으로 설치를 하여 package.json, node_modules 등을 자동 생성한다.

생성된 nest 프로젝트 에서 yarn set version berry를 해서 yarn 버전을 berry로 바꿔준다.

이제 yarn 버전 업데이트가 완료되었고 쓸모 없어진 node_modules를 삭제해주었다.

yarn run start:dev 명령어를 사용해 nest 프로젝트 실행을 했더니 드디어 잘 실행이 되었다!

소개

규칙

학습 기록

[공통] 개발 기록

[재하] 개발 기록

[준섭] 개발 기록

회의록

스크럼 기록

팀 회고

개인 회고

멘토링 일지

Clone this wiki locally