[npm link] npm link로 라이브러리 배포전 테스트 방법
1. 상황
라이브러리를 개발해서 npmjs 에 배포하기전에 테스트를 하고 싶은 상황
- npmjs에 publish하면 되돌릴 수 없다.
2. 사전 조건
그리고 아래와 같이 두개의 프로젝트가 있다.
- mind-wired - 테스트하려는 라이브러리 개발 프로젝트, prjA라고 하겠음
- sample-prj - mind-wired를 사용하는 테스트용 프로젝트, prjB라고 하겠음.
실행 환경에 대한 정리
- nvm 으로 node 설치. 아래 문서에서 설명하겠지만 동일한 node 버전으로 맞추는걸 권장함
- 라이브러리 프로젝트에서는 최종 산출물을
dist
디렉토리에 생성하고 있음. 최종 산출물에 대해서 테스트를 하려고 함(즉, prjA의 src 디렉토리에 있는 실제 코드를 테스트하는게 아님) - vscode에서 live server를 사용해서 테스트용 웹서버를 실행함
3. npm link
개발중인 로컬 환경에서 마치 라이브러리를 배포한 것처럼 symbolic link를 생성해주는 npm의 명령어
prjA의 루트 디렉토리는 아래와 같이 생겼음.
mind-wired 루트 디렉토리[mind-wired]
+- package.json
+- src
+- dist
+- ...
package.json 등이 있는 루트 디렉토리에서 다음과 같이 npm link
명령어를 실행함
npm link 실행mind-wired git:(master) ✗ npm link
audited 303 packages in 2.344s
34 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
/Users/___/.nvm/versions/node/v14.18.2/lib/node_modules/mind-wired
-> /Users/___/workspace/ws-js/mind-wired
- 위처럼
.nvm
밑에mind-wired
라는 심볼릭 링크가 생성됨
생성된 경로를 따라가서 확인해보면 아래와 같음
npm link
실행 전
링크 생성 전➜ node_modules ls -al
total 0
drwxr-xr-x 3 _____ staff 96 Nov 30 23:28 .
drwxr-xr-x 4 _____ staff 128 Nov 30 23:28 ..
drwxr-xr-x 24 _____ staff 768 Nov 30 23:28 npm
실행 후에는 아래와 같이 링크가 생성됨
링크 생성 후➜ node_modules ls -al
total 0
drwxr-xr-x 4 ___ staff 128 May 23 10:50 .
drwxr-xr-x 4 ___ staff 128 Nov 30 23:28 ..
lrwxr-xr-x 1 ___ staff 42 May 23 10:50 mind-wired -> /Users/___/workspace/ws-js/mind-wired
drwxr-xr-x 24 ___ staff 768 Nov 30 23:28 npm
4. 테스트
이제 prjB는 prjA를 include해서 테스트하려고 함.
prjB의 루트 디렉토리에서 다음과 같이 링크를 걸어줌.
명령어 npm link prjAmind-wired-test npm link mind-wired
/Users/___/workspace/ws-js/mind-wired-test/node_modules/mind-wired
-> /Users/___/.nvm/versions/node/v14.18.2/lib/node_modules/mind-wired -> /Users/___/workspace/ws-js/mind-wired
➜ mind-wired-test
prjB의 node_modules를 살펴보면 아래와 같음
TXT