npm module path

npm install 시 global 옵션으로 설치하지 않았을 경우 node package 는 일반적으로 $HOME/node_modules/ 하단에 설치됩니다.

예로 다음처럼 vue-cli 를 설치했을 경우

npm install vue-cli

$HOME/node_modules/vue-cli 에 설치되고 패키지 정보는 .npm/vue-cli/ 에 기록되며 실행 파일에 대한 symbolic links는 node_modules/.bin/ 에 생성됩니다.


npm 으로 모듈을 설치할 때 많이 만나게 되는 에러는 설치한 모듈을 찾을수 없다는 에러이며 npm 이 모듈을 찾을 때 참고하는 환경 변수인 NODE_PATH 를 shell 초기화 파일(Ex: ~/.bash_profile) 에 설정해 주면 됩니다.

export NODE_PATH =$PATH:$HOME/node_modules/

node 로 설치한 실행 파일을 못 찾을 경우 PATH 환경 변수를 업데이트해 주면 됩니다.

export PATH=$PATH:$HOME/node_modules/.bin/


global 옵션 사용시

모듈 설치시 -g 옵션을 주면 global 로 설치되는데 대체 global module 디렉터리가 어디인지 헷갈리는 경우가 많습니다. 다음과 같이 root -g 명령으로 global 모듈 경로를 확인할 수 있습니다.

$ npm root -g

/usr/local/lib/node_modules


일반적으로 global module 은 root 권한이 있어야 하므로 global 설치는 권장하지 않지만 가끔 패키징이 잘못 되었는지 일반 사용자로 설치해도 권한이 없다고 나오는 경우가 있습니다.


이럴 경우 prefix 를 변경해 주면 root 폴더를 바꿀 수 있습니다. 예로 다음 명령어는 root 폴더를 HOME 밑에 .node_modules 로 변경합니다.

npm config set prefix ${HOME}/.node_modules


이제 다음과 같이 global 옵션으로 설치하면 ${HOME}/.node_modules/ 에 모듈이 설치되고 실행 파일(Ex: vue-cli) 은 ${HOME}/.node_modules/bin 에 symbolic link 가 생기는 것을 확인할 수 있습니다.

$ npm i -g vue-cli
$ ls -la .node_modules/bin/

total 8
drwxr-xr-x 2 lesstif rnd 4096 Jan 14 18:24 .
drwxr-xr-x 4 lesstif rnd 4096 Jan 14 18:24 ..
lrwxrwxrwx 1 lesstif rnd   35 Jan 14 18:24 vue -> ../lib/node_modules/vue-cli/bin/vue
lrwxrwxrwx 1 lesstif rnd   40 Jan 14 18:24 vue-init -> ../lib/node_modules/vue-cli/bin/vue-init
lrwxrwxrwx 1 lesstif rnd   40 Jan 14 18:24 vue-list -> ../lib/node_modules/vue-cli/bin/vue-list


이제 root 를 변경했을 경우 PATH 환경 변수에 다음 내용을 추가하면 됩니다.

export PATH=$PATH:$HOME/.node_modules/bin/



Ref





blog comments powered by Disqus