본문 바로가기
NodeJS/이론

NPM (Node Package Manager)

by Hwanii_ 2023. 10. 28.
728x90

NPM :

NPM 은 전 세계의 개발자들이 만든 다양한 기능 ( == 패키지 == 모듈 ) 들을 관리해주는 매니저 이다.

 
따라서 여러 유용한 기능들을 프로젝트에 설치 하고 관리를 하고 싶을 때 NPM 을 사용 한다.
(자바의 maven / 파이썬의 pip 라고 생각 하면 된다)
 

 
터미널에 npm install XXX 명령어를 입력하여,
프로젝트에 NPM 생태계 안에 들어 있는 어떤 패키지 ( == 기능 == 모듈 ) 를 인스톨 할 수 있다.
 
 
Node.js 를 설치 하면, 자동으로 NPM도 설치가 되어 있다.
 
결국, Node.js 환경 에서 NPM 이라는 개념을 활용 하여 각각의 패키지를 직접 설치 하고 관리 하며 동작 시켜 줘야 한다.
 
NPM 버전 또한 cmd 창에 아래의 명령어를 입력 하여 확인 할 수 있다.
 

 
줄여서 -v (--v) 로도 가능 하다.
 
 
 

NPM 프로젝트 생성 하기

 
우선, 터미널에 작성된 기존 내용을 지우는 방법은 cls (또는 clear) 을 입력 하면 된다.
 
프로젝트 (패키지 == 폴더) 를 열고 (생성 == 만들기), 콘솔창에 npm init 을 입력 한다.
 
별도의 프로젝트 이름을 추가 할 수도 있고, 또는 폴더 이름 그대로 프로젝트를 생성 하고 싶으면 바로 엔터를 누르면 된다.
 
그 이후에, 버전도 따로 명시해 줄 수 있고, 프로젝트 설명 입력도 할 수 있다.
 

 

 
그러면 아래와 같이 json 파일이 생성 된다.
 

 

 
터미널에서 입력 했었던 내용들을 json 파일에서 확인 할 수 있다.
 
이렇게 NPM 프로젝트는 기본적으로 package 라는 이름을 가진 json 파일을 기준으로 해서 시작 하게 된다.
 
매번 프로젝트를 생성 할 때, 이것저것 설정을 하고 NPM 프로젝트를 생성 하는것은 번거롭기 때문에,
 
아래의 명령어를 통해 어떤 질문에 답변 하지 않고 바로 package.json 파일을 기본 내용으로 생성 할 수 있다.
 

 
기존에 만든 package.json 파일을 삭제 하고 확인 하면 디폴트 내용으로 생성 된 것을 확인 할 수 있다.
 
 
 

외부에 패키지를 설치 하는 방법

 

 
설치 하려고 하는 패키지 명을 확인 하고, npm install 명령어를 입력 하면 된다.
 

오타 : rodash -> lodash

 
 
lodash 라는 패키지를 작성 하고 엔터를 누르면 해당 패키지를 설치 하고 명령이 종료 된다.
 

 
제대로 적용 되었는지를 확인 하려면 아래와 같이 체크 하면 된다.
 

오타 : rodash >> lodash

 
 
node_modules 라는 폴더가 생성 된다.
 
또한, .package-lock.json 라는 파일이 생성 된다.
 
마지막으로, package.json 파일에 라이브러리가 디펜던시 된 것을 볼 수 있다.
 

오타 : rodash -> lodash

 
 
위와 같이, NPM 프로젝트는 기존 방식 처럼,
 
따로 CDN 방식으로 주소를 가져오거나, <script> 태그를 사용 해서 연결 하는게 아니라,
 
프로젝트에 직접적으로 설치를 해서 사용을 하는 방식 이라고 볼 수 있다.
 
 
 

parcel == 번들러 (Bundler) 설치 하기

 
npm install parcel 을 입력 해서 parcel 패키지를 설치 한다.
 

parcel 이란 ?

 
설치한 여러 패키지를 실제 웹사이트에 올라갈 수 있도록 하나의 구조로 묶어주는 역할을 함.
 
따라서 parcel 이라는 패키지는 bundler 라고 부른다.
 

 
설치가 완료 될 때 까지 기다리고,
 
설치가 완료 되면,
 

오타 : rodash -> lodash

 
 
마찬가지로 dependencies (의존성) 에 추가 된 것을 확인 할 수 있다.
 
이때, 주의 해야 할점이 있는데,
 
parcel 이라는 패키지는 실제 웹사이트에서 직접적으로 동작하는 패키지가 아닌,
 
설치한 여러 패키지를 실제 웹사이트에 올라갈 수 있도록 하나의 구조로 묶어주는 역할 이기 때문에,
 
일반적인 패키지 install 명령어와 다르게, 아래와 같이 --save-dev 를 붙혀 줘야 한다.
 

또는 npm install --save-dev parcel

 
그러면 devDependencies (개발 의존성) 라는 곳에 명시 되게 된다.
 

 
이렇게 외부의 패키지를 추가 할 때,
 
실제 브라우저에서 동작할 기능을 담고 있는 패키지 인지 (배포용),
또는
개발용으로만 사용하는 패키지 인지를 구분 해줘야 한다.
 

 
--save-dev 를 줄여서 -D 로 작성 할 수 있다.
 
 
 

package.json 파일 & package-lock.json 파일

 
package.json 파일은 어떠한 프로젝트 (또는 패키지) 가 의존 하고 있는 패키지를 관리 하도록 하는 설정 파일 이다.
 
그래서 만약 위와 같이 parcel 이라는 패키지를 설치 하게 되면,
 
parcel 패키지가 의존 하고 있는 또 다른 패키지를 관리 하도록 하는 package.json 설정 파일이 존재 하는데,
 
그렇기 때문에, 어떠한 패키지를 설치 하면, 그 패키지가 의존 하고 있는 수많은 패키지들에 대한 데이터도,
 
자동으로 node_modules 라는 라이브러리 루트 폴더에 설치 되게 된다.
 
그래서 node_modules 라는 라이브러리 루트 폴더 내부에는 수많은 데이터들이 존재 하게 된다.
 
 
 
package-lock.json 파일은 패키지와 또 다른 패키지들의 관계 정보를 가지고 있는 설정 파일 이다.
 
따라서, package.json 파일과 package-lock.json 두 개의 파일은 반드시 온전하게 보관 되어야 한다.
 
경우에 따라서는 package-lock.json 파일은 삭제 하고 다시 설치 할 수도 있지만, 되도록이면 유지 하는게 좋다.
 
그리고, package.json 파일은 반드시 유지 되어야 한다.
 
 
 
만약에 node_modules 라는 라이브러리 루트 폴더가 삭제 되더라도,
 
package.json 파일과 package-lock.json 파일이 존재 하면,
 
cmd 창에 npm install 이라는 명령어만 입력 해주면, 복구 작업이 진행 된다.

반응형

'NodeJS > 이론' 카테고리의 다른 글

유의적 버전 (Semantic Versioning == SemVer)  (0) 2023.10.29
서버 (프로젝트) 실행 및 빌드 하기  (0) 2023.10.29
Node.js  (0) 2023.10.28