본문 바로가기

Programming/Node.js

6. 패키지 매니저 (1) - npm [5]

node js logo image

 

 

 

 

npm에는 전역(global) 설치 옵션이 존재합니다. 지금까지 모듈을 설치하였을 경우 프로젝트 폴더 내의 [node_modules] 폴더에 해당 패키지들이 설치된 것을 확인할 수 있었습니다. 전역 설치를 진행할 경우, 이는 node_modules가 아닌 npm이 설치된 폴더에 설치를 진행하게 됩니다. 

 

윈도우의 경우 기본 경로는 C:\Users\사용자명\AppData\Roaming\npm이고 맥의 경우는 /usr/local/lib/node_modules가 됩니다. 보통 이 경로는 환경변수에 등록된 상태이기 때문에, 전역 설치를 진행한 패키지는 콘솔에서 명령어로 사용할 수 있다는 장점이 있습니다. 즉, '패키지를 모든 곳에서 사용한다'는 뜻은 아닙니다. 대부분 명령어로 사용하기 위한 것이죠.

 

그럼 rimraf 패키지를 통해서 전역 설치와 폴더 구조에 관련된 내용까지 함께 살펴보겠습니다. 참고로 rimraf 패키지는 리눅스/맥에서의 rm -rf 명령어를 윈도우에서 사용할 수 있게 만들어주는 패키지 입니다. 이는 지정한 파일이나 폴더를 지우는 역할을 합니다. 

 

 

C:\>npm install --global rimraf

changed 42 packages in 4s

14 packages are looking for funding
  run `npm fund` for details

 

* 리눅스나 맥에서 관리자 권한 필요시, sudo npm install --global rimraf로 실행

 

 

위와 같이 전역 설치를 진행한 패키지의 경우에는 package.json에는 기록되지 않습니다. 일단 우리가 npm을 실습하는 프로젝트 폴더로 이동해서, rimraf node_modules를 입력해 보겠습니다. 말 그대로 node_modules 폴더를 삭제하는 것입니다(powershell에서 실행이 안될 경우 npx rimraf node_modules로 실행)

 

이렇게 되면 프로젝트 폴더 안에는 package.json / package-lock.json만 남게 됩니다. 하지만 package.json에는 이미 설치했던 패키지들의 정보가 그대로 남아있어서 다시 복구가 가능합니다. 해당 프로젝트 폴더에서 npm install만 실행하면 해결되죠(실제로 git에서도 node_modules는 커밋하지 않음).

 

다만, 주의할 것은 npm i를 실행하면 package.json과 package-lock.json이 변하게 되므로, 실제 서비스 배포시에는 npm ci 를 사용해서 package-lock.json에 작성된대로 설치합니다. 

 

 

 

 


 

 

 

○ npx 사용하기

 

위에서 전역 설치를 진행한 패키지의 경우 package.json에 기록되지 않는다고 했습니다. 이 경우, 다시 설치할 때 제외되기 때문에 이러한 전역 설치를 기피하는 경우도 많습니다. 

 

만일 위의 경우와 같이 rimraf 패키지를 전역 설치하지 않고서도 명령어로서 사용하기 위해서는, 아래와 같이 설치 후 실행하면 됩니다. 

 

$ npm install --save-dev rimraf
$ npx rimraf node_modules

 

 

일단 위와 같이 rimraf 모듈을 package.json의 devDependencies 속성에 기록하고 npx 명령어를 사용하게 되면 전역 설치 때와 유사한 방식으로 실행이 되면서도 package.json에 기록도 되므로 버전 관리가 한층 용이해집니다.