본문 바로가기
Node

npm link

by 우보틀 2022. 3. 4.

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

 

npm-link | npm Docs

Symlink a package folder

docs.npmjs.com

 

'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