토막글

mac npm path 설정, npm -g의 저장 위치와 환경 변수 설정

케굴 2022. 12. 27. 22:24

개요

오늘 하루를 투자하여 거의 npm과 맥의 path 설정을 마스터 했다.

 

이 사건의 발단은 다음과 같았다. 

회사의 빌드 전용으로 쓰는 컴퓨터가 있는데, cordova를 이용하여 설정을 해야했다.

그런데 아무리 npm i -g cordova , sudo npm i -g cordova를 하여도 아래와 같은 오류만 떴다. 

-bash: cordova: command not found

문제는 npm -g로 설치하는 모듈들의 경로가 기본 경로가 아니였고, 이에 대한 path가 지정되어 있지 않았기 때문이다. 

이 오류를  고친 방법과, npm -g의 설치 위치 , path등에 대하여 기록해 보고자 한다.

 

환경변수란 무엇인가 ? 

환경 변수는 윈도, 맥 OS, 리눅스와 같은 운영체제(Operating System)에서 실행되는 모든 프로세스/사용자가 접근할 수 있는 전역 시스템 변수라고 한다. 

 

다들 mac 터미널에 특정 명령어를 입력하여 무엇인가를 실행해 본 적이 있을것이다. 

이것이 가능한 이유는 환경 변수에  PATH가 설정 되어 있기 때문에 가능한 일이다. 

code를 치면 vsCode가 실행되고, node를 치면 node js가 실행이 된다. 

 

한번 확인해 보자. 

mac의 경우 usr/local/bin이 기본 환경 변수로 지정되어 있다. 

해당 경로에 접속해보면 다음과 node와 code를 볼 수 있다.

 

 

npm i -g는 어디에 설치가 될까 ?

 

npm -g를 통해서 설치되는 위치는 아래 명령어를 이용하여 확인 가능하다. 

npm root -g

대부분이 /usr/local/lib/node_modules 일 것이다. 

기본으로 지정되는 위치이기 때문이다. (도대체 회사컴은 왜 아니였을까...)

 

해당 폴더를 열어보면 내가 전역에 설치한 모듈들을 확인할 수 있다. 

 

그렇다면 여기서 궁금증이 생긴다 

usr/local/bin에는 무엇이 들어있을까? 

 

usr/local/bin

뭔가가 들어있다. 

npm -g를 통해 설치한 nodemon을 한번 살펴보자 

 

보면 node_modules/nodemon 속에 있는 실행파일의 복사본이다. 

좀더 찾아보니 이를  symbolic link라고 한다고 한다. 

즉 npm -g를 통해 설치를 하면 

node_modules에 모듈들이 설치가 되고,

mac의 기본 환경변수인 usr/local/bin에 실행파일의 복사본( symbolic link )이 저장이 된다. 

 

나의 상황

Users/유저이름/.global-module 폴더에 전역으로 설치된 node_modules들이 저장되고 있었고,

이에 Users/유저이름/.global-module/bin 속에 symbolic link들이 들어있었다.

 

환경변수 확인하기 

우선 나의 상황에서는 node_modules를 저장하는 폴더의 위치가 기본 위치가 아니라 custom 되어 있었다. 

모듈이 자기 멋대로 저장된다면 이에 따른 실행 파일의 위치도 맥의 기본 경로가 아닐 것이다.

그렇다면 실행 파일의 위치를 컴퓨터가 읽을 수 있도록 해주어야 한다. 

 

시작하기에 앞서  내 환경 변수가 어떻게 설정이 되어 있는지를 확인해야 한다. 

다음과 같은 명령어를 shell에 입력하여 확인 가능하다. 

echo $PATH

 

환경변수 설정하기 

환경변수는 자신이 사용하는 shell 마다 각각 적용이 된다.  

vs code에서만 봐도 두가지 shell을 사용할 수 있다. 

 

 

사용하는 shell에 따라서 환경변수를 설정하는 파일이 다르다. 

 

우선 bash를 사용하는 경우 아래와 같은 명령어로 열 수 있다. 

// vi 로 열기
vi ~/.bashrc 
// vscode로 열기
code ~/.bashrc

 

bash 의 경우 껐따 켜야지만 환경변수가 적용이 되었다.

 

 

zsh를 사용하는 경우 아래와 같이 열 수 있다.

vi ~/.zshrc 
code ~/.zshrc

 

환경 변수 설정을 위한 파일을 열었다면 원하는 폴더 경로를 넣어서 저장해 주면 끝난다. 

아래와 같은 형식으로 path를 추가한뒤 저장한다. 

export PATH="내가 원하는 경로:$PATH"

npm -g 의 설치 경로가 달라서 실행이 안되는 경우에는 

아래와 같이 실행 파일의 가상본이 담겨있는 곳의 경로를 적으면 된다.

나의 경우에는 아래와 같은 곳에 실행 파일의 복제본( symbolic link )이 저장되고 있었기에 아래와 같은 path를 추가하여 해결했다. 

export PATH="/Users/유저이름/.global-modules/bin:$PATH"

 

 

환경변수가 잘 적용되었는지는 echo $PATH를 통해 확인하면 된다.

적용되지 않은 경우에는 터미널을 한번 껐다 켜보길 바란다. 

후기

정리하고 나니 별거 없어보이지만,,, 당시에는 정말 힘들었다.

예전부터 뭔가를 깔고 path 설정을 왜 하는건지 의문을 가지고 있었는데 

이번 기회에 잘 알게 된 것 같다

맥과도 조금더 친해진듯 하다 

 

------------------

틀린 내용이 있을수 있습니다. 

댓글 남겨주시면 고치겠습니다 ^^