본문 바로가기
컴맹도 할 수 있다/Node.js, Express.js

NPM

by 구운고기 2022. 9. 27.
반응형

목록

1. NPM 의미

2. NPM 온라인 저장소

3. 커맨드 라인 도구

4. NPM 사용

1) 프로젝트 생성하기

2) pacakage.json

3) 의존성 관리하기

4) npm install 명령어

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

6) dependencies와 devDependencies

7) package-lock.json

8) 의존성 버전 표기법

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

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

11) 전역 패키지 추가

12) 로컬 패키지와 전역 패키지

13) 의존성 삭제하기

14) NPM 사용해보기

15) npm script 사용하는 이유

16) 자주 사용되는 스크립트

17) NPM 요약

 

 

 

 

 

 

 

1. NPM 의미

Node Package Manager

Node.js를 관리하는 도구

온라인 저장소 + 커맨드 라인 도구 (cmd, terminal)

 

 

 

 


2. NPM 온라인 저장소

수많은 오픈소스 라이브러리와 도구들이 업로드되는 저장소

 

 

 

 

반응형

3. 커맨드 라인 도구

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

예시)

프로젝트 설정하기/ 추가,삭제 관리

프로젝트 의존성 관리

저장소에서 라이브러리, 도구 다운로드 설치 가능

 

 

 

 


4. NPM 사용

1) 프로젝트 생성하기

$npm init

 

프로젝트 디렉터리 생성

                      ↓

해당 디렉터리 안에서 npm init 명령어 사용

                      ↓

몇 번의 질문을 통해 package.json 파일 만들기

                      ↓

해당 디렉터리는 Node.js 프로젝트가 됨

 

 

 

 

2) pacakage.json

프로젝트 관련 정보들이 저장되는 파일

파일을 직접 수정하거나 npm 명령어를 사용해서 프로젝트 정보 수정 가능

 

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

이거 말고도 더 있음

 

 

 

 

3) 의존성 관리하기

프로젝트를 만들려면 라이브러리를 사용하게 됨

이 라이브러리들을 dependency(의존성)이라고 함

 

* 라이브러리

  특정 기능을 수행하는 코드의 묶음

  → 다른 사람이 구현한 것을 사용하는 방법 (node.js의 패키지임)

 

 

 

 

4) npm install 명령어

npm install (=npm i) 프로젝트의 의존성을 관리할 수 있음

사용 방법에 따라 여러 용도로 사용 가능

* 의존성 추가

* 의존성 내려받기

* 개발용 의존성 추가

* 전역 패키지 추가

 

 

 

 

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

$npm install [package-name]로 작성하면

필요한 패키지를 설치 진행 가능(= 프로젝트에 추가 가능)

추가된 패키지는 package.json의 dependencies 안에 추가되고

node_modules디렉터리에 저장됨

 

 

 

 

6) dependencies와 devDependencies

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

 

npm은 개발용 의존성을 분리하여 관리 가능

* 개발용 의존성 배포 전까지만 사용하는 의존성

예) 유닛 테스트 라이브러리

--save-dev 옵션을 이용하면 개발용 의존성을 추가할 수 있음

개발용 의존성은 package.json - devDependencies에 추가됨

 

 

 

 

7) package-lock.json

프로젝트에 의존성을 추가하게 되면 자동으로 '^최신 버전'으로 추가가 됨

의존성 버전이 갑자기 변경되지 않도록 설치된 버전을 고정시키는 역할

(프로젝트에 의존성을 추가하게 되면 package-lock.json 파일이 자동으로 생성됨)

 

 

 

 

8) 의존성 버전 표기법

npm install [package-name]@[version]으로 패키지 버전을 지정할 수 있음

 

예시)

~1.11.0 : 1.11. 의 가장 최신 버전 설치

^1.11.0 : 1. 의 가장 버전 설치, 가장 왼쪽의 0이 아닌 버전을 고정

1.11.0 : 1.11.0 버전만 설치

 

 

 

 

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

$npm install

 

node_modules 디렉터리는 코드 관리나 배포 시에 업로드 안 함

이유) * 의존성이 많아지면 용량이 너무 커짐

         * 운영체제별로 실행되는 코드가 다른 경우가 존재

 

 

 

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

$npm install --prodiction

 

9) 번처럼 npm install 명령어를 아무 옵션 없이 사용하면

package.json에 정의된 dependencies와 devDependencies의 의존성을

node_modules 디렉터리에 다운로드하음

 

 

프로젝트를 베포 할 때에는 개발용 의존성을 같이 포함할 필요 없음

$npm install 뒤에 --prodiction 옵션을 추가하면

package.json의 dependencies만 node_modules에 다운받음

 

 

 

 

11) 전역 패키지 추가

$npm install [package-name] --global

 

패키지를 전역 패키지 디렉터리에 다운받음

프로젝트에 종속되지 않는 모든 node.js 개발하는 프로젝트에 사용함

커맨드 라인 도구들을 전역 패키지로 추가해서 사용

예시) express-generator (express 생성기), pm2 (node.js 프로세스 메니져)

 

 

 

 

12) 로컬 패키지와 전역 패키지

 

* 로컬 패키지

   package.json에 선언되어 있고 (= 프로젝트에 종속되어있다)

   node_modules에 저장된 패키지

 

* 전역 패키지

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

 

전역 패키지도 프로젝트에서 사용할 수 있으나

프로젝트의 의존성이 package.json 내에 명시적으로 선언되어 있는 것이 

프로젝트 관리할 때 더 편함

 

 

 

 

13) 의존성 삭제하기

$npm remove [package-name]

 

의존성 패키지를 삭제할 수 있음

package.json의 dependencies와 devDependencies와 node_modules에서 삭제

 

 

 

 

14) NPM 사용해보기

스크립트 : 간단한 동작을 수행하는 코드

package.jason의 script에 선언된 스크립트를

npm run [script-name] 명령어로 실행할 수 있음

 

package.json 실행
{...
"scripts" : { "1번자리" : "echo\"2번자리"\" },
...
}
$ npm run 1번자리
"2번자리"

 

 

 

 

15) npm script 사용하는 이유

npm script 내에선 의존성 패키지를 사용할 수 있음

 

"scripts":{"test": "node_modules/.bin/tap test/\*.js"}

                             ↓

     node_modules안의 bin 안에 있는 tap_test에 접근하는게 아니라

      json 안에서 자신과 근접한 tap_test를 직접 사용할 수 있음 

                             ↓

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

 

 

 

 

16) 자주 사용되는 스크립트

NPM 스크립트에는 run을 사용하지 않고 사용할 수 있는 주요 스크립트들이 있음

* test - 코드 유닛 테스트 등에 사용

* start - 프로젝트 실행

* stop - 프로젝트 종료

 

npm 내부적으로 코드를 제공해주는 게 아님

npm은 package나 json 등의 정보를 바탕으로 특정 명령만 수행해줌

 

 

 

 

17) NPM 요약

명령어 npm init 프로젝트 생성
npm install 의존성 추가
npm remove 의존성 삭제
npm run 스크립트 실행
주요 파일/ 디렉터리
(파일 자동 생성됨)
node_modules 프로젝트 의존성 저장 디렉터리
package.json 프로젝트 관리 (버전, 의존성, 스크립트 등)
package-lock.json 의존성 버전 확인

 

반응형

'컴맹도 할 수 있다 > Node.js, Express.js' 카테고리의 다른 글

질문했던것들 정리 9.28  (0) 2022.09.28
Node.js 모듈  (0) 2022.09.27
NPX  (0) 2022.09.27
Node.js 이해  (0) 2022.09.17
Node.js 시작  (4) 2022.09.14