2022.03.04 - [Node] - nestjs 코드레벨에서 까보기 에서 nest의 여러 패키지들을 까볼때 두가지 방법을 썼다
일단 둘다 무식하게 console.log를 하나씩 찍어봤다.
nest는 추상화가 잘 되어있다고 코드를 읽으면서 느꼈다.
근데 2~3 depth 넘어가게 되면 계속 흐름을 놓쳤다. (아직 큰 흐름이 크게 안읽힌다... 정진하자)
1. nest 라이브러리를 clone 받고나서 npm link를 이용하였다.
2. node_modules 에 설치되어있는 코드에서 console.log를 하나씩 찍었다.
2번을 시도하기 전에 1번으로 계속 시도했었다.
1번의 효율이 너무 안좋아서 2번으로 우회하였다.
1번을 시도하면서 알게된 방법이 npm link이다.
@nest-cli를 적용할때는 npm link를 글로벌로 이용했고
@nestjs/core, @nestjs/common 을 사용할때는 로컬에서 npm link를 직접 해주었다.
서두가 너무 길었다. 바로 본론으로 들어가보자
symlink a package folder => 패키지 폴더의 바로가기를 생성해준다. symlink는 softlink와 비슷한 걸로 이해했다.
공식문서에서는 재빌드 없이 반복적인 테스트와 작업을 진행할 수 있도록 작업을 설치해주는 도구입니다. 와 같이 나와있다.
사용법은 의외로 간단하다.
두가지 방법이 있다.
첫번째
라이브러리를 작업중인 폴더에서 아래와 같이 입력
// 패키지 폴더여야 함
npm link
해당 라이브러리를 적용할 패키지에서
// 작업중인 패키지를 적용할 프로젝트의 위치여야함
npm link <패키지 이름> // package.json에 설치되어있는 이름이여야 함
두번째
npm link <작업중인 패키지>
ex)
npm link ../node-redis
두개의 방법다 적용되는 과정은 같다.
npm link가 적용되는 과정은 두 단계로 나뉜다.
첫번째단계
작업중인 패키지에서 npm link를 입력하면 해당 패키지의 symlink(바로가기)를 전역폴더에 생성한다.
npm ls 명령어를 치면 현재 폴더에 설치되어 있는 패키지들을 확인할 수 있다.
이때 -g 옵션을 주면 전역범위에 설치된 npm 들을 확인할 수 있다.
--depth=0 옵션을 주면 뎁스가 없는 부모 들만 가져올 수 있다.
npm ls -g --depth=0
두번째 단계
npm link packagename은 전역으로 설치된 package(npm link로 등록한 패키지)와 현재 node_modules에 있는 package의 symlink를 생성해준다.
npm link를 적용하면 작업중인 패키지를 변경하면 바로바로 작업중인 폴더에서 반영이 된다.
위의 즉시 반영때문에 확인할 때 좀 더 편했다.
https://docs.npmjs.com/cli/v8/commands/npm-link
'Node' 카테고리의 다른 글
data mapper 패턴, active record 패턴 🌱 (0) | 2022.04.02 |
---|---|
nestjs 의존성 주입, 싱글턴 패턴 (0) | 2022.02.28 |
npm 만드는 법 && 출시 (0) | 2022.02.07 |
.npmignore (0) | 2022.02.07 |
algorithm-cli 생성기 (0) | 2022.02.07 |