글 작성자: 망고좋아
반응형

🎯 NPM이란?

  • Node Package Manager
  • Node.js 프로젝트를 관리하는 필수적인 도구
  • 온라인 저장소 + 커맨드 라인 도구
    • 온라인 저장소란 수많은 오픈소스 라이브러리와 도구들이 업로드되는 저장소이다. 필요 라이브러리나 도구를 손쉽게 검색할 수 있으며 거대한 생태계를 보유
    • 커맨드 라인 도구란, 프로젝트 관리를 위한 다양한 명령어를 제공한다.
      • 저장소에서 라이브러리, 도구 설치
      • 프로젝트 설정 / 관리
      • 프로젝트 의존성 관리

 

📝 프로젝트 생성하기

npm init
  • 프로젝트 디렉터리를 생성하고, 해당 디렉터리 안에서 npm init 명령어를 사용하면 몇 번의 질문을 통해 package.json이라는 파일을 만들어 주고 이 디렉터리는 Node.js 프로젝트가 된다.

 

📕 질문들

package name: (test)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to ~/package.json:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {},
"author": "",
"license": "ISC"
}
Is this OK? (yes)

 

📝 package.json

  • 프로젝트 관련 정보들이 저장되는 파일이다.
  • 이 파일을 직접 수정하거나 npm 명령어를 사용하여 프로젝트 정보를 수정할 수 있다.

 

📕 구성요소

key value
scripts npm run [script name]으로 실행할 수 있는 사용자 작성 스크립트
dependencies 의존성 패키지들
devDependencies 개발환경에서만 사용하는 의존성 패키지들

 

📝 의존성 관리하기

  • 프로젝트 내에서 사용하는 라이브러리를 관리하는 방법이다.
  • 프로젝트가 실행되기 위해 라이브러리에 의존하기 때문에 이러한 라이브러리들을 dependency(의존성)라고 이야기한다.

 

📝 라이브러리란?

  • 특정 기능을 수행하는 코드의 묶음이다.
  • 복잡한 기능을 직접 작성하지 않고, 다른 사람이 구현한 것을 사용하는 방법이다.
  • Node.js에서는 패키지라고도 부른다.

 

📝 npm install 명령어

  • npm install 명령어를 통해 프로젝트 의존성을 관리할 수 있음
  • npm install 명령어는 사용 방법에 따라 여러 용도로 사용 가능 (npm i 를 축약형으로 사용 가능)
    • 의존성 추가
    • 의존성 내려받기
    • 개발용 의존성 추가
    • 전역 패키지 추가

 

📝 프로젝트에 의존성 추가하기

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

 

📝 dependencies와 devDependencies

npm install package-name --save-dev
  • npm은 개발용 의존성을 분리하여 관리할 수 있다.
  • 개발용 의존성이란 배포 전까지만 사용하는 의존성 (ex. 유닛 테스트 라이브러리)
  • --save-dev 옵션을 이용하면 개발용 의존성을 추가할 수 있다.
  • 개발용 의존성은 package.json의 devDependencies에 추가된다.

 

📝 프로젝트에 의존성 내려받기

npm install
  • 기본적으로 node_modules 디렉터리는 코드 관리나 배포 시에 업로드하지 않는다.
  • 의존성이 많아지면 용량이 너무 커지는 것과, 운영체제별로 실행되는 코드가 다른 경우가 존재하기 때문이다.
  • npm install 명령어를 아무 옵션 없이 사용하면 package.json 에 정의된 dependencies와 devDependencies의 의존성을 node_modules 디렉터리에 내려받는다.

 

📝 개발용 의존성을 제외하고 내려받기

npm install --production
  • 프로젝트를 배포할 때에는 개발용 의존성을 같이 포함할 필요가 없다.
  • package.json 의 dependencies만 node_modules에 내려받는다.

 

📕 의존성 버전 표기법

  • npm install package-name @version 으로 패키지 버전을 지정할 수 있음
  • ~1.13.0 : 1.13.x 버전 설치
  • ^1.13.0 : 1.x.x 버전 설치, 가장 왼쪽의 0이 아닌 버전을 고정.
  • 0.13.0 : 0.13.0 버전만 설치
  • 프로젝트에 의존성을 추가하면 자동으로 ‘^최신버전’으로 추가가 되는데, 의존성 버전이 갑자기 변경되지 않도록, 설치된 버전을 고정하는 역할을 한다.

 

📝 전역 패키지 추가

npm install package-name --global
  • 패키지를 전역 패키지 디렉터리에 내려받는다.
  • 주로 프로젝트에 종속되지 않는 커맨드 라인 도구들을 전역 패키지로 추가해서 사용 Ex) express-generator, pm2

 

📝 로컬 패키지와 전역 패키지

📕 로컬 패키지

  • package.json 에 선언되어 있고, node_modules에 저장된 패키지

 

📕 전역 패키지

  • npm install -g 를 통해 내려받아, 전역 패키지 저장소에 저장된 패키지

npm install -g 를 통해 내려받아, 전역 패키지 저장소에 저장된 패키지

 

📝 의존성 삭제하기

npm remove package-name
  • 의존성 패키지를 삭제할 수 있다.
  • package.json의 dependencies와 devDependencies에서 삭제하고 node_modules에서도 삭제한다.

 

📝 스크립트 실행하기

  • 스크립트란 간단한 동작을 수행하는 코드이다.
  • package.json의 scripts에 선언된 스크립트를 npm run script-name 명령어로 실행할 수 있다.
{ …
    "scripts": {
        "say-hi": "echo \"hi"\"
    },
    …
}
npm run say-hi
// "hi"

 

📕 npm script를 사용하는 이유

  • npm script 내에선 의존성 패키지를 사용할 수 있다.
"scripts": {"test": "node_modules/.bin/tap test/\*.js"}

// =>
"scripts": {"test": "tap test/\*.js"}

 

📕 자주 사용되는 스크립트

  • npm 스크립트엔 run을 제외하고 사용할 수 있는 주요 스크립트들이 있다.
  • test - 코드 유닛 테스트 등에 사용
  • start - 프로젝트 실행
  • stop - 프로젝트 종료
  • run을 제외하고 사용할 수 있을 뿐, npm 내부적으로 코드를 제공해 주는 것은 아님

 

🎯 NPX이란?

// npm
npm i cowsay -g
cowsay hi

//npx
npx cowsay hi
  • npm 패키지를 설치하지 않고 사용할 수 있게 해주는 도구이다.
  • 프로젝트에 추가하거나 전역 패키지로 추가하지 않고, npx를 이용하여 바로 실행할 수 있음
  • 자주 사용되지 않지만 한 번씩 사용해야 하는 npm패키지들을 npx를 이용해서 쉽게 빠르게 사용할 수 있다.

 

npx node@12 index.js
npx node@14 index.js
  • npx를 사용하면 Node.js의 특정 버전을 사용하여 js 파일을 실행할 수 있다.
  • 프로젝트의 Node.js 버전 별 실행환경을 확인할 때 유용하다.

 

📝 NPX - github gist 코드 실행

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
  • gist는 github에 등록된 간단한 코드이다.
  • npx를 이용하면 gist 코드를 다운로드하지 않고 바로 실행 가능하다.
  • git이 설치되어 있어야 한다. 온라인상의 코드는 어떤 위험이 있을지 모르므로 코드를 잘 확인하고 실행해야 한다.

 

🏷 요약

📕 명령어

  • npm init : 프로젝트 생성
  • npm install : 의존성 추가
  • npm remove : 의존성 삭제
  • npm run : 스크립트 실행

 

📕 주요 파일 / 디렉토리

  • node_modules : 프로젝트 의존성 저장 디렉토리
  • package.json : 프로젝트 관리(버전, 의존성, 스크립트...)
  • package-lock.json : 의존성 버전 확인
반응형