nodemon 패키지 설치 과정에 대한 학습 과정에서 npm의 글로벌 설치와 환경 변수에 대해 이해한 내용을 정리했습니다.
nodemon 패키지 설치
node와 Express만 사용하면 코드를 수정한 뒤 웹 상에서 확인하기 위해 서버를 껐다가 다시 켜야 하는 번거로움이 있는데 이를 해결해주는 패키지가 nodemon이다. (사실 처음 node main.js를 실행했을 때 Flask에서도 지원해주는 서버 재실행 기능을 node는 왜 안해주지? 라는 생각이 들었다.)
nodemon은 코드가 변하면 이를 감지하여 자동으로 서버를 재실행 해주는 기능을 제공한다.
설치는 아래와 같이 터미널에 입력한다.
sudo npm install -g nodemon
위 명령어에서 -g 옵션은 global 설치를 의미한다. 글로벌 설치를 하는 이유는 nodemon 실행을 앞으로 node나 npm처럼 경로 상관 없이 항상 실행할 수 있는 환경에 놓기 위해서이다.
정리하자면 앞으로 기존에 웹 서버를 돌리기 위해 node main.js
를 입력하는 대신 nodemon main.js
을 입력하여 서버를 돌릴 예정이기 때문에 글로벌 설치를 진행했다고 볼 수 있다.
글로벌 설치와 환경 변수
글로벌(전역) 설치
가 의미하는 바는 간단히 말해서 현재 디렉토리의 node_modules에 설치되는 것이 아닌 MacOS 기준으로 usr/local/lib/node_modules
경로에 설치함을 뜻한다. 여기서 usr
폴더는 시스템 레벨 폴더이므로 설치하기 위해 sudo 권한이 요구된다.
또한 해당 경로 내 /nodemon/bin/nodemon.js
파일을 실행하기 위한 symbolic link(바로가기) nodemon 파일을 usr/local/bin
폴더에 설치한다. 위 두가지는 npm config list --json
을 통해 전역 설치 경로인 prefix의 설정과 nodemon의 package.json
내 bin 필드의 설정을 따른다.
위에서 언급한 usr/local/bin
은 MacOS에서 $PATH
환경 변수로 등록된 경로에 해당하는데, 환경 변수는 터미널에서 특정 프로그램을 실행할 때 (가령 node, npm, pip, python 명령어 입력 등) 가장 먼저 뒤지는 경로는 뜻한다. 쉽게 말해 우리가 터미널에 'node'라고 입력하면 OS는 $PATH
경로에 가서 'node'라는 파일이 있는지 찾는다. 그런데 usr/local/bin
에는 대부분 심볼릭 링크 파일(바로가기)를 넣어두어 특정 프로그램의 실행이 간편하도록 하는 용도로 쓴다.
💡 Tip
echo $PATH 명령어를 입력하면 환경변수로 등록된 디렉토리의 목록을 확인할 수 있다.
결론적으로 터미널 창의 어떤 위치에서든지 nodemon을 입력하면 nodemon이라는 심볼릭 링크를 환경 변수 내에서 찾기 시작하고 이를 찾으면 심볼릭 링크가 가리키는 원본 파일의 경로를 따라가 해당 파일을 실행하는 순서이다. (추가적으로 nodemon.js 원본 파일을 열어보면 코드 상단에 node로 실행해야 한다는 코드가 있어 사실상node /usr/local/lib/node_modules/nodemon/bin/nodemon.js
명령을 실행하는 것과 같다.)
환경 변수 응용
가령 내가 만든 뉴스 스크랩 파이썬 코드를 심볼릭 링크로 만들어 환경변수에 아래와 같이 저장할 수 있다.
ln -s /my-project/project01/newscrape.py /usr/local/bin/newscrape
ln
은 링크 생성 명령어이며 옵션으로 -s
를 주면 심볼릭 링크 생성을 명령한다. 이를 통해 심볼링 링크 참조 대상과 링크 파일 저장 위치를 순차적으로 입력하면 된다.
이후 실행시킬 newscrape.py파일에 실행권한을 부여한다. 이 과정을 하지 않으면 Permission Denied
를 보게 된다.
chmod 755 /my-project/project01/newscrape.py
마지막으로 newscrape.py을 열어 최상단에 #!/usr/bin/env python
를 입력한다. 이는 해당 파일을 python으로 실행한다는 의미이다.
이렇게 하면 newscrape.py 파일의 심볼릭 링크인 newscrape 파일이 $PATH 환경변수로 등록된 usr/local/bin 경로에 생성되고, 앞으로 터미널에서 newscrape만 입력해도 newscrape.py파일을 실행시킬 수 있게 된다.
'백엔드 개발자(node.js)가 되는 과정' 카테고리의 다른 글
Express로 MVC 패턴에 대한 간략 정리 (0) | 2023.05.26 |
---|---|
자바스크립트에서의 클래스 구현과 클로저 (0) | 2023.05.25 |
백엔드에서 현재 시각을 데이터베이스에 입력하기 (0) | 2023.05.23 |
파이썬 vs 자바스크립트 코드의 차이 (1) | 2023.05.23 |
AWS EC2에서 mongoDB 데이터베이스 생성하기 (0) | 2023.05.19 |