본문 바로가기
엘리스 AI 트랙 4기/elice AI track

[5주차] NPM

by _sweep 2022. 2. 16.

2월 16일 자 학습 내용 정리입니다.

 

 

 NPM

NPM(Node Package Manager)은 Node.js 프로젝트를 관리하는 필수적인 도구이다.
NPM은 온라인 저장소와 커맨드라인 도구로 구성되어 있다.

 

✔️ 온라인 저장소

수많은 오픈소스 라이브러리와 도구들이 업로드되는 저장소이다.
필요한 라이브러리나 도구를 손쉽게 검색할 수 있으며 Node.js의 인기가 높아짐에 따라 거대한 생태계를 보유하고 있다.

 

✔️ 커맨드라인 도구

프로젝트 관리를 위한 다양한 명령어를 제공한다.

  • 저장소에서 라이브러리, 도구 설치
  • 프로젝트 설정, 관리
  • 프로젝트 의존성 관리

 

 

NPM 사용 - 프로젝트 생성

 

npm init

 

npm init은 해당 디렉터리가 node.js 프로젝트임을 선언하는 명령어이다.

프로젝트 디렉터리를 생성한 후 해당 디렉터리 안에 이 명령어를 사용하면 package.json이라는 파일을 만들어준다.

이때 package.json 파일은 package name, version, description, author 등의 프로젝트 관련 정보들이 저장되는 파일로 이 파일을 직접 수정하거나 npm 명령어를 사용하여 프로젝트에 대한 정보를 수정할 수 있다.

 

 

 NPM 사용 - 의존성 관리

의존성 관리란 프로젝트 내에서 사용하는 라이브러리를 관리하는 방법이다.
프로젝트가 실행되기 위해 많은 라이브러리에 의존하기 때문에 이러한 라이브러리들을 dependency(의존성)라고 한다.
Node.js에서는 라이브러리를 패키지라고 하기도 한다.

 

npm install

 

npm install은 의존성 추가, 의존성 내려받기, 전역 패키지 추가, 개발용 의존성 추가 등의 여러 용도로 사용된다.
축약형으로 npm i로도 쓸 수 있다.

 

✔️ npm install [package-name]

npm install [package-name]

 

필요한 패키지를 프로젝트에 추가할 수 있다.
추가된 패키지는 package.json의 dependencies 항목 안에 추가되며 node_modules 디렉터리 안에 저장된다.

 

✔️ npm install [package-name] --save-dev

npm install [package-name] --save-dev

 

배포 전까지만 사용할 개발용 패키지를 분리하여 관리한다.
--save-dev 옵션을 사용해 추가된 패키지는 package.json의 devDependencides에 추가된다.

 

✔️ npm install

npm install

 

기본적으로 node_modules 디렉터리는 코드 관리나 배포 시에 업로드하지 않는다.
의존성이 많아지면 용량이 너무 커지기도 하고 os 별로 실행되는 코드가 다른 경우가 존재하기 때문이다.

npm install을 아무 옵션 없이 사용하면 package.json에 정의된 dependencies와 devDependencies의 패키지를 node_modules에 내려받는다.

따라서 배포 시에는 node_modules 디렉터리 없이 package.json에 해당 프로젝트에 사용된 패키지들을 명시하고 이를 다른 사용자가 사용할 때 명시된 패키지들을 내려받아 사용할 수 있는 것이다.

 

✔️ npm install --production

npm install --production

 

프로젝트를 배포할 때에는 개발용 의존성을 포함할 필요가 없기 때문에 package.json의 denpendencies만 node_modules에 내려받는다.

 

✔️ npm install [package-name]@version

npm install [package-name]@version

 

패키지의 버전을 지정한다.

  • ~1.13.0 : 1.13.x 버전 설치
  • ^1.13.0 : 1.x.x 버전 설치
  • 1.13.0 : 1.13.0 버전만 설치

 

✔️ npm install package-name --global

npm install package-name --global

 

패키지를 전역 패키지 디렉터리에 내려받는다.

패키지는 로컬패키지와 전역 패키지로 나뉘는데
로컬패키지는 package.json에 선언되어있고 node_modules에 저장된 패키지이다.
전역패키지는 npm install -g를 통해 내려받아 전역 패키지 저장소에 저장된 패키지이다.

 

 

 NPM 사용 - 의존성 삭제

npm remove [package-name]

 

패키지를 삭제할 수 있다.
package.json의 dependencies와 devDependencies에서 삭제하고 node_modules에서도 삭제된다.

 

 

 NPM 사용 - 스크립트 실행

스크립트란 간단한 동작을 수행하는 코드이다.

 

npm run [script-name]

 

npm run으로 package.json의 scripts에 선언된 스크립트를 실행할 수 있다.

run 이외에도 자주 사용되는 스크립트는 다음과 같은 것들이 있다.

  • test : 코드 유닛 테스트에 활용
  • start : 프로젝트 실행
  • stop : 프로젝트 종료

 

 

NPX

NPX는 npm 패키지를 설치하지 않고 사용할 수 있게 해주는 도구이다.
프로젝트에 추가하거나 전역 패키지로 추가하지 않고 npx를 이용하여 바로 실행할 수 있다.

 

npx node@12 index.js
npx node@14 index.js

 

위의 같이 npx를 사용하면 Node.js의 특정 버전을 사용하여 js 파일을 실행할 수 있다.
프로젝트의 Node.js 버전 별 실행 환경을 확인할 때 유용하게 쓰인다.

 

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32

 

또한 npx를 사용하여 github gist 코드를 실행할 수 있다.
gist는 github에 등록된 간단한 코드로 npx를 사용하면 gist 코드를 다운받지 않고 바로 실행시킬 수 있다.
이때 git이 반드시 설치되어 있어야  하며 온라인 상의 코드는 어떤 위험이 있을지 모르므로 코드를 잘 확인하고 실행해야 한다.

 

 

'엘리스 AI 트랙 4기 > elice AI track' 카테고리의 다른 글

[5주차] 웹과 웹 프레임워크  (0) 2022.02.18
[5주차] Node.js 모듈  (0) 2022.02.16
[5주차] Node.js와 ES6  (0) 2022.02.16
[4주차] Axios  (0) 2022.02.12
[4주차] HTTP와 API  (0) 2022.02.11

댓글