본문 바로가기
( ´・・)/개발

[Node.js] NPM (Node Package Manger) 명령어 / 전역설치 vs 지역설치

by shinsangah 2023. 3. 12.

 

 

[Node.js] Node.js란? / 개발 환경 세팅 / Node.js 설치

Node.js 란? 1990년 웹이 처음 등장하면서 인류는 정보를 웹페이지를 표현할 수 있게 되었고, 인터넷을 통해서 웹페이지를 전송할 수 있게 되었습니다. 종이에 담겨있던 수많은 정보들이 빠른 속도

kddk.tistory.com

 

[Node.js] 버전 관리 도구 설치버전 관리 Tool 설치 (NVM)

GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go. A node.js version management utility for Windows. Ironically written in Go. - GitHub - coreybutler/nvm-windows: A node.js version management utili

kddk.tistory.com

 

[Node.js] NPM (Node Package Manger) 패키지 관리 시작 / 설치 / 삭제

여기서 말 하는 패키지는 html에서 가져와서 사용하던 라이브러리를 생각하시면 되는데요. 다들 첫 번째 웹 프론트엔드 프로젝트 때 Swiper를 그렇게 많이 사용했잖아요. 그런 라이브러리랑 비슷

kddk.tistory.com

 


출처: https://youtu.be/wQ-KLcIX6l4


npm init

새로운 프로젝트(패키지)를 시작할 때 사용하는 명령어로 package.json 파일을 생성합니다.

 

그러면 본격적으로 npm 명령어 사용법에 대해 알아보도록 하겠습니다.

npm 으로 프로젝트를 관리하기 위해서는 npm init 명령어를 입력하면 되구요.

 

 

Enter를 치면, 프로젝트 이름 입력해주세요. package name: 부터 나오면서

기본적으로 Enter를 누르게 되면 동그라미친 괄호 안에 있는 기본값이 작성이 됩니다.

계속 Enter를 쳐서 쭉 작성을 하셔도 될 것 같습니다.


 

npm init -y

-y 옵션을 사용하여 기본값을 자동으로 설정할 수 있습니다.

 

 

다시 지우고나서 npm init -y 옵션을 주게 되면, Default 값이 자동으로 입력이 됩니다.

그러면 이렇게 자동 생성된 package.json 파일 들어가도 자동으로 입력이 된 것을 확인할 수 있습니다.

 

 


npm install <패키지명> (축약 i)

패키지(=라이브러리, 모듈)를 설치하는 명령어 입니다. (로컬 설치)

 

 

이번에는 Package를 설치 해볼게요. npm install 패키지명 입력하면 되구요.

npm install left-pad 이렇게 입력해도 되고, 축약어로 npm i left-pad 이렇게 i 하나만 입력해도 됩니다.

그러면 이렇게 left-pad 1.3.0 버전이 설치된 것을 확인할 수 있습니다.

 


npm install <패키지명@버전>

버전과 함께 사용하면 특정 버전을 설치할 수 있습니다.

 

 

만약에 특정 버전을 설치하고 싶으시면, npm i left-pad@1.2.0 이렇게 패키지 옆에

골뱅이@ 버전 번호를 입력하시면 된답니다. 다시 한 번 설치를 해보니, 이렇게 새로운 버전 설치를 확인할 수 있습니다.

 


npm install --save 축약 -S

--save 옵션을 사용하면 dependencies에 추가됩니다.

(npm@5 버전 이후부터는 디폴트로 --save 옵션이 적용됨.)

 

 

그리고 설치를 할 때, --save 옵션 혹은 축약 -S (대문자) 하면, dependencies에 자동으로 추가가 되는데요.

그런데, 저희는 아무런 옵션을 넣지 않았는데 저기 보시면 그냥 추가가 됐잖아요. 그 이유가 npm@5 버전부터는

디폴트로 --save 옵션이 적용된다고 합니다. 그렇기 때문에 이 옵션은 굳이 안넣으셔도 된다고 합니다.

 


npm install --save-dev 축약 -D

이것을 사용하면 dependencies에 추가됩니다.

 

 

npm install <패키지명1> <패키지명2>

 

여러개의 패키지를 설치하고 싶으시면 이렇게 공백을 이용해서 여러가지를 설치할 수 있습니다.

npm i nodemon eslint -D 저는 명령어를 이렇게 사용해서 nodemon 패키지와 eslint 패키지를 한번에 설치하고,

-D 축약어 명령을 사용해서 devDependencies 속성에 2개의 패키지가 추가된 것을 확인했습니다.

 


 

npm install -g <패키지명>

 

그리고 -g 옵션을 사용해서 전역 설치를 할 수 있습니다. (또는 --global)

우선 전역 설치가 어떤 것인지 살펴보기 전에, devDependencies 설치된 nodemon 라이브러리에 대해 알아볼게요.

 

 

https://www.npmjs.com/package/nodemon

 

nodemon

Simple monitor script for use during development of a Node.js app.. Latest version: 2.0.21, last published: 10 days ago. Start using nodemon in your project by running `npm i nodemon`. There are 4368 other projects in the npm registry using nodemon.

www.npmjs.com

 

nodemon (노드몬) 이라는 라이브러리는 node 명령어와 같습니다.

javaScript 파일을 node 실행 환경에서 실행시켜주는 그러한 라이브러리라고 보면 될 것 같아요.

 

하지만 node 명령어와 다르게 nodemon은 javaScript 파일에 변경사항이 생기면, 자동으로 감지해서 재실행 합니다.

예를 들어, index.js 라는 파일이 있어요. 간단하게 console.log 에 텍스트를 출력해볼게요.

 

 

console.log에 간단한 텍스트를 찍고 node index.js 파일을 실행해주면 위와 같이 잘 입력이 되고,

그리고 텍스트를 변경을 하면 다시 실행을 node index.js 이렇게 해야 변경된 텍스트가 출력되잖아요.

 

 

 

이번에는 nodemon을 활용해서 실행해보도록 하겠습니다.

nodemon 같은 경우에는CLI로 기능을 제공하기 때문에 우리가 터미널에서 명령어를 수행해서 실행할 수 있습니다.

 

 

로컬에 설치된 nodemon을 실행하기 위해서는 node_modules 디렉토리 안에

.bin 디렉토리가 있는데, 여기에 nodemon 이 명령어를 통해 실행할 수 있는건데요.

 

 

이렇게 ./node_modules/.bin/nodemon index.jsnode_modules 디렉토리 안에

bin 디렉토리 안에 nodemon을 통해서 index.js 파일을 실행할 수 있습니다.

그러면, 마찬가지로 실행이 되고 텍스트 (Hello World!) 도 잘 출력되는 것을 확인할 수 있습니다.

 

 

텍스트만 변경 후 저장해도 이렇게 자동으로 변경사항이 감지가 되어 다시 재실행 한 것을 확인할 수 있습니다!

현재 이 nodemon 패키지는 로컬에 설치되어 있기 때문에 반드시 시행을 할 때 이 파일에 접근해서 실행을 해야 하는데요.

 

 

이렇게 자주 사용하는 CLI 명령어 같은 경우에는 전역 환경에서 설치하곤 합니다.

그럴 때는 위에서 말한 npm install -g <패키지명> g 옵션으로 설치할 수 있습니다

.npm install -g nodemon 입력해서 nodemon을 전역 설치하시면 됩니다!

 

 


* CLI ?

명령줄 인터페이스(CLI)는 Command-Line Interface 또는 Character User Interface의 줄임말로 글자를 입력하여

컴퓨터에 명령을 내리는 방식이다. 가장 대표적인 예시로는 도스, 명령 프롬프트, bash로 대표되는 유닉스 셸 환경이 있다.


 

 

 

그런데, 처음 하시는 분들은 설치 중에 이렇게 permission denied 에러가 나신 것을 확인할 수 있지요.

전역 환경에 설치할 때는 관리자 권한이 필요해요. mac OS 같은 경우에는 sudo 를 앞에 입력해주시면 되고,

Windows OS 같은 경우에는 터미널을 열 때, 우클릭을 해서 관리자 권한으로 실행하기 누르시면 됩니다.

 

 

mac 기준으로 위와 같이 sudo npm install -g nodemon 입력해서 다시 설치를 하고,

비밀번호 입력해서 다시 Enter를 치게 되면 nodemon이 전역환경에 설치된 것을 확인할 수 있습니다.

전역환경에 설치된 nodemon은 언제 어디서든지 이 명령어를 통하여 nodemon을 실행할 수 있습니다.

 

 

버전을 출력해보기 위해 nodemon -v 바로 이렇게 버전 정보가 뜨며, 접근이 가능하구요.

해당 디렉토리가 아닌 다른 디렉토리에서도 어디에서나 접근이 가능합니다.

다른 곳에 가서도 nodemon -v 입력하니 버전 정보가 뜨며 실행이 잘 되는 것을 확인할 수 있습니다.

 

 

그리고 💡으로 로컬 환경에 설치된 이런 nodemon 같은 CLI를 쉽게 접근하는 방법도 말씀드릴게요.

일단, 전역적으로 설치된 nodemon을 제거해보도록 하겠습니다. 제거하는 것은 밑에서 다시 설명드리겠지만,

npm uninstall -g nodemon 쳐서 제거할 수 있습니다. nodemon -v 다시 치면, 출력이 안되는 것을 확인할 수 있지요.

 

 

로컬에는 이렇게 설치가 되어있기 때문에, 로컬에 있는 nodemon을 실행을 하려면,

우리가 ./node_modules/.bin/nodemon index.js 이렇게 복잡하게 접근을 했잖아요.

 

 

현재 프로젝트 디렉토리가 아니기 때문에,통합 터미널에서 열기 (Open in Integrated Terminal) 눌러 다시 열어요.

 

 

현재 프로젝트 디렉토리로 가서 ./node_modules/.bin/nodemon index.js 이렇게 실행 했는데요.너무 복잡하잖아요. 그럴 때는 "scripts" 속성에서 node_modules 안에 있는 .bin 이 실행파일에다이렉트로 접근할 수 있습니다. "start": "nodemon index.js" start 명령어로 바로 이렇게 접근할 수 있습니다.

 

 

그러면 간단하게 npm run start 이렇게 접근할 수 있겠지요. 잘 실행이 되는 것을 확인할 수 있습니다.그리고 start 같은 경우에는 조금 특이하게 npm start 이렇게 바로 실행할 수 있습니다.

 

그리고 우리가 이 소스를 gitHub 저장소나, 이 소스파일을 옮기고 싶으면,node-modules 디렉토리 안에는 엄청나게 많은 라이브러리가 있기 때문에 이 모든 라이브러리를복사해서 옮겨넣거나,  gitHub 저장소에 저장해놓게 되면 매우 비효율적 입니다.

 

 

그래서 소스를 옮길 때는 node-modules는 안옮기셔도 됩니다.

예를 들어, 삭제를 하고 이 3개의 파일만 갖고 계셔도 됩니다.

 


 

npm install

package.json에 설정된 모든 패키지를 설치

 

 

그리고 만약에 여기 있는 module을 다시 설치하고 싶으시면 npm install 명령어만 입력하시면 됩니다!

그러면 자동으로 dependencies와 devDependencies를 참고해서 다시 설치 합니다.

package.json 파일을 참고해서 다시 node_modules 디렉토리를 생성한 것을 확인할 수 있습니다.

 

 

만약에 의존되는 module에 이런 버전이 꼬였거나, 그런 에러가 발생할 때는

node_modules, package-lock.json 이 2개의 파일을 다시 삭제하고, 다시 npm install 이렇게 설치해주셔도 됩니다.

참고로만 알고 계셔도 될 것 같습니다! 다시 파일이 생기고, 디렉토리 생성된 것을 확인할 수 있습니다.

 


 

npm install --production

package.json에 설정된 모든 패키지를 설치 (devDependencies 제외)

 

 

그리고 운영 환경에 배포할 때, "devDependencies" 이러한 라이브러리는 배포하면 안되잖아요.

일단 다시 node_modules 디렉토리 제거해주시고 설치 하실 때, npm install --production 이 옵션을 주시면

devDependencies에 있는 module을 제외한dependencies에 있는 module만 설치합니다.

보시면, 아까와 다르게 module에 갯수가 줄어있지요?

 


npm uninstall <패키지명>

로컬 패키지 삭제

npm uninstall -g <패키지명>

전역 패키지 삭제


npm update <패키지명>

설치한 패키지를 업데이트 합니다.

 

 

nodemon을 일단 글로벌하게 먼저 전역 설치를 해줄게요. npm i -g nodemon

nodemon -v 하게 되면, 현재 설치된 버전 정보가 나오는 것을 확인할 수 있구요.

 

 

npm i -g nodemon@2.0.15 이렇게 g옵션을 줘서 예전 버전으로 다시 설치를 한 번 해볼게요.

그리고 다시 nodemon -v 쳐서 버전을 다시 확인하게 되면, 2.0.15 버전이 설치가 잘 되었네요.

 

 

버전을 업데이트 하실 때는, npm update -g nodemon 이렇게 update 명령어를 입력하시면 됩니다.

그리고 다시 nodemon -v 쳐서 버전을 확인하시면 최신 버전인 2.0.21 로 잘 업데이트 된 것을 확인할 수 있습니다.

이런 업데이트 명령어보다 그냥 uninstall 한 다음에 다시 install 해도 된다고 합니다.

 


npm root

로컬 패키지 설치 디렉토리 확인

npm root -g

로컬 패키지 설치 디렉토리 확인

 

 

npm root 명령어는 현재 node_modules 디렉토리의 절대경로를 확인할 수 있구요. 

npm root -g 옵션을 하게 되면, 전역으로 설치된 node_modules의 절대경로를 확인할 수 있습니다.

 


npm ls

로컬 패키지 설치 디렉토리 확인

npm ls -g

로컬 패키지 설치 디렉토리 확인

 

 

그리고 npm ls 입력하게 되면, 설치된 module을 확인할 수 있구요.

npm ls --depth=2 입력하게 되면, 의존성 module 까지 모두 확인할 수 있습니다.

2 depth 까지 확인을 한다고 옵션을 준 것입니다. 그러면 보시는 것 같이 쭈욱 나옵니다.

 

 

nodemon 이라는 module 에서는 이러한 module 들이 필요하고,

이런식으로 의존성 관련된 module 까지 함께 나오는 것을 확인할 수 있습니다.

 

 

npm ls -g 또 g 옵션을 한 번 줘보면,

글로벌로 어떠한 module이 설치되어있는지 나오는 것을 확인할 수 있습니다.

 


 

npm start

package.jason 파일의 script 속성의 start 실행

npm run <script-name>

package.jason 파일의 script 속성의 start와 스크립트 실행

 

 

마지막은 스크립트 명령어 입니다. 스크립트 명령어는 정말 많이 사용합니다.

npm start를 하게 되면, "scripts" 속성에 있는 "start"를 실행한다고 했지요.

그리고 나머지는 npm run test-nodemon / npm run test 이렇게 실행할 수 있습니다.

 

 

 

CLI Commands | npm Docs

Documentation for the npm registry, website, and command-line interface

docs.npmjs.com

 

명령어 같은 경우에는 이렇게나 종류가 굉장히 많습니다.

일단 이거 3개만 알고 계셔도 학습하시는 데에는 충분하실 거에요.

 

프로젝트를 생성한 다음에 npm init을 해서 패키지에다 json 파일을 생성해주신 다음에,

원하는 module을 npm install로 설치를 하고, 필요없는 module은 npm uninstall로 제거하면 돼요.

그리고 script 명령어를 사용해서 서버를 실행하거나 빌드하거나 이런 작업을 수행하시면 됩니다.

요정도만 알고 있고, 나머지는 필요할 때 구글링을 하면 자주 사용하는 것들은 자연스럽게 익혀진다고 합니다!

 

 


 

 

전역설치와 지역설치에 대해 한번 더 언급드리면, 대부분 전역설치를 하는 경우에는

CLI를 제공하는 module 같은 경우에요. nodemon, vue-cli 라던가.. 시스템 상 즉, 터미널 안에서

해당 명령어를 실행할 때 주로 전역설치를 합니다. 참고로 알고 계시면 될 것 같습니다.

 

 

 

기본적으로 package.json에 설치될 때 버전이 이렇게 세 자리 수로 구분이 되는 것을 확인할 수 있는데요.

이러한 세자리 수 버전 표기법은 '시멘틱 버저닝 (Semantic Versioning)' 이라는 규칙을 따르고 있습니다.

 

앞 버전부터 [MAJOR, MINOR, PATCH] 버전 입니다. 우리가 소프트웨어를 개발한다고 가정했을 때,

소프트웨어 큰 변화가 있을 때 MAJOR 버전을 변경한 다음에 배포를 하구요. MINOR 버전 같은 경우에는 기능 추가,

PATCH 버전 같은 경우에는 버그 수정 등 각각 자릿수에 맞게 기준을 두고 버전을 변경하고 있습니다.

 

package.json 버전을 표기할 때는 다양한 표현 방식으로 버전을 표기하고 있습니다.

1.2.3 / >1.2.3 / >=1.2.3 / <1.2.3 / <=1.2.3 / ~1.2.3 / ^1.2.3