본문 바로가기
코딩/JS

Js복습 pt.6 NPM

by 최만규 2022. 8. 4.
728x90

쳇 베이커, 웨스트 코스트의 재즈의 명인

티스토리를 정리할 때면 종종 노래를 들으며 정리하곤 한다. 기억을 되짚으며 하기에 가사 있는 노래는 피한다. 

그래서 ASMR이나 연주곡을 듣곤하는데 요즘엔 쳇 베이커의 재즈에 빠졌다. 공부하며 들을 새로운 노래를 찾는 중이라면 맛보자.

https://youtu.be/keU3J0HHQ4s


NPM (Node Package Manager)

나에게 npm은 익숙한 친구이다. 다만, 친하지는 않은 안면이 있는 친구와도 같다.

강의를 듣고 실습을 진행하거나, 무언가 기능일 필요해서 추가할 때면 터미널 창에 항상 npm~ 이런 식으로 사용해 왔었다.

npm은 풀네임에서 알 수 있듯이 노드 패키지들을 관리하는 기능을 한다.

더 와닿게 말하면 개발 시 필요한 다양한 모듈들을 다운로드할 수 있게 해주는 도구이다.

npm install 모듈명  이런 식으로 자주 사용하는 기능의 모듈들을 제작해, 모듈 저장소에 저장해 다른 사람들이 사용할 수 있도록 공유를 한다.

node.js를 설치 시 자동 설치가 된다. js가 웹에서 실행되면 웹 애플리케이션, 노드js에서 js실행 시 백엔드 애플리케이션이 된다.

https://www.npmjs.com/

 

npm

Bring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

각종 npm 라이브러리에 대한 정보들이 있다. 어떻게 설치하는지, 어떻게 사용하는지 알려준다.  npm을 추가로 공부시 참고하자.

 

실습을 해보자.

package.json을 수동으로 생성 후, 터미널을 통해 npm install dayjs(날짜를 표현하는 패키지임)하게 되면 다음과 같이 된다.

package.json은 프로젝트에 대한 정보를 갖고 있는 파일이고 위처럼 직접 작성도 가능하고 npm init으로 자동생성도 가능하다.

dependencies속성에 dayjs라이브러리가 표현 됨

추가로 node_modules라는 폴더와 package-lcok.json이라는 파일이 생성되었다.

먼저 line 4를 보게 되면, dependencies 직독 직해하면 의존성.

 dependencies : 프로젝트에서 사용하는 모듈을 기술하는 부분이다.

이 속성을 통해 이 프로젝트가 무슨 모듈을 사용하고 있는지 한눈에 볼 수 있다.

 

dayjs를 받아오는 index.js를 만들고 console.log를 통해 dayjs의 결과를 출력하도록한다.

예제 실행(node index.js) 결과, 잘 나온다.

 

다음은 npm init을 통해 패키지를 자동 생성해보자.

아까와 같이 package.json, package-lock.json, node_modules 디렉터리가 생성되었다. 하나하나 알아가 보자.

여러가지 속성들

가장 먼저 nameversion은 말 그대로이다.

패키지의 이름과 이 패키지의 버전을 의미하고, 버전의 경우 알아두면 좋은 점이 있다.

버전의 경우 (시멘틱 버저닝)의 규칙을 따르는데 X.X.X 각 숫자 별로 의미하는 것이 major, minor, patch이다.

  • major : 주요 변화 
  • minor : 기능 추가
  • patch : 버그 수정

 

다음은 scripts로 눈길을 돌려보자.

npm으로 run을 할 경우 scripts에 있는 명령어들이 실행된다. 위의 경우 test만이 존재함으로 npm run 또는 npm test를 할 경우 test가 실행된다.

즉 자주 실행하는 명령어를 scripts로 작성 시 npm명령어로 실행 가능하다. 

start 이 친구는 유별난 게 start 커맨드로 scirpts에 저장 시 npm run start가 아닌 npm start만으로도 실행이 가능하다.

 

노드몬 너로 정했다!

devDependencies 개발할 때만 의존하는 모듈을 이야기한다. 즉 배포를 할 경우 여기에 들어있는 모듈의 경우는 필요 없기에 배제하는 것이다. npm install --save-dev를 통해 devDependencies로 저장 가능하다.

잠깐 nodemon에 대해 설명을 하고 넘어가자면, 일반적으로 node를 통해 js파일을 실행시킬 경우 js파일에 변화가 발생해도 다시 실행하지 않는 한 스스로 실행되지 않는다. 다만 이 nodemon의 경우 변화를 감지해 스스로 재실행한다.

nodemon의 경우 local에 설치되어 있어 이 파일에 접근해 사용해야 하지만, -g옵션을 통해 nodemon을 설치할 경우 전역적으로 설치 가능하다. -g옵션을 통해 설치 시 관리자 권한이 필요한 것도 유의하자.

 

뭐여 사진 왜케 큰겨

이번엔 생성된 node_modules  디렉터리는 package.json에 설치된 모듈뿐만 아니라 package.json에 있는 모듈이 의존 중인 모듈 전부가 설치된 디렉터리임 그래서, 펼쳐보면 수많은 폴더들과 파일들을 볼 수 있다.

package-lock.json은 프로젝트의 설치된 모듈들의 의존성 트리를 기록 중이며, 이 파일을 참고해 node_modules 디렉터리 안에 모듈을 다운로드한다. ex) a.js가 실행되려면 a-1.js가 실행되어야 함. 이런 트리구조를 기록 중임.

 

NPM 사용법

 

  • npm init -y : default값이 자동으로 입력되고 프로젝트 생성이 된다.
  • npm i 또는 install 패키지명 : 패키지 설치된다.
  • npm i 패키지 @버전 : 버전에 해당하는 패키지가 설치된다.
  • npm install --save-dev 혹은 (축약식으로) -D : devDependencies로 저장 가능하다.
  • npm i 패키지명 공백 패키지명 : 여러 개의 패키지 설치 가능하다.
  • -g 옵션 사용 : 전역 설치(관리자 권한 필요)

 

# local에 설치된 패키지 쉽게 접근하는 방법 # (일반적으로 경로를 통해 접근해야 함.) EX)../bin/users../~~

경로를 통해 접근하지 않더라도 위에서 배운 scripts를 통해 start: "nodemon index.js"를 통해 실행 가능하다.

그래서 보통 start에 build나 프로젝트 실행을 시키는 명령어를 넣는다고 한다.

nodemodules의 경우는 삭제하더라도 npm install을 통해 다시 설치 가능 + 깃허브에 올리지 않아도 정상 작동함.
npm install --production의 경우 devDependencies를 제외한 모든 패키지를 설치한다.

npm uninstall 패키지명 : 로컬 패키지 삭제
npm  uninstall -g : 전역 패키지 삭제

npm root : 로컬 패키지 설치 경로 확인
npm root -g :  전역 패키지 설치 경로 확인

이밖에도 많은 명령어가 있지만, 차차 배워가도록 하자. 차피 위에 명령어 당장 외우지도 못할 거 직접 쓰면서 익숙해지는 게 답이다.

 

728x90