ELICE AI6/Node.js

Elice) NPM

이동탁 2022. 12. 31. 02:26

 

1.  NPM 이해하기

 

Node Package Manager

 

Node.js의 프로젝트를 관리하는 필수적인 도구로 온라인 저장소 + 커맨드라인 도구이다.

 

커맨드라인 도구 :

- 저장소에서 라이브러리, 도구 설치

- 프로젝트 설정 / 관리

- 프로젝트 의존성 관리

 

NPM을 사용하기 위해서는 NPM 커맨드라인 도구의 사용법을 익혀야 한다.

 

 


 

2. NPM 커맨드라인 도구

 

 

($는 터미널에 입력하는 코드라는 뜻이다.)

$npm init :

프로젝트 디렉토리를 생성하고 해당 디렉토리 안에서 npm init 명령어를 사용하면

몇 번의 질문을 통해 package.json이라는 파일을 만들어 주고 이 디렉토리가 Node.js 프로젝트가 된다.

 

! package.json :

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

 

$npm install

해당 명령어를 통해 프로젝트 의존성을 관리할 수 있다.

의존성이란 프로젝트 내에서 사용하는 라이브러리를 관리하는 방법으로 프로젝트가 실행되기 위해서는 라이브러리에 의존하기 때문에

해당 라이브러리들을 dependency(의존성)라고 한다.

 

더보기

1) $npm install [package-name]

 

필요한 패키지를 프로젝트에 추가할 수 있다. 추가된 패키지는

package.json의 dependencies 안에 추가되며, node_modules 디렉토리에 저장된다.

 

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

 

npm은 개발용 의존성을 분리하여 관리할 수 있다.

개발용 의존성은 배포 전까지만 사용하는 의존성으로 해당 명령어로 개발용 의존성을 추가할 수 있다.

개발용 의존성은 package.json의 devDependecies에 추가된다.

 

3) $npm install [package-name]@[version]

 

패키지의 버전을 지정할 수 있다.

~1.0.0 : 1.0.x 버전들을 설치

^1.0.0 : 1.x.x 버전들을 설치, 가장 왼쪽의 값이 0이 아닌 버전을 고정한다.

1.0.0 : 1.0.0 버전만 설치

 

4) $npm install

 

해당 명령어 처럼 뒤에 아무 옵션 없이 사용하면

package.json에 정의된 dependencies와 devDependencies의 의존성을 두개 다 node_modules 디렉토리에 내려받는다.

 

5) $npm install --production

 

프로젝트를 배포할 시에는 개발용 의존성을 굳이 같이 포함할 필요가 없기 때문에

package.json의 dependencies만 node_modules에 내려받는다.

 

6) $npm remove [package-name]

 

의존성 패키지를 삭제한다.

 

7) $npm run

 

package.json 파일의 scripts를 실행한다.

 

8) $npm install [package-name] --global

 

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

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

 

ex. express-generator(웹서버를 만드는 역할) , pm2(Node.js 프로세스 관리)

 

로컬 패키지 : package.json에 선언이 되어 있고, node_modules에 저장된 패키지 ($npm install [package-name])

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

 

! 전역 패키지도 프로젝트에서 사용이 가능하지만,

프로젝트의 의존성이 package.json내에 명시적으로 선언되어 있어야 프로젝트를 좋은 방향으로 관리할 수 있다.

 

 


 

3. NPM에 대한 개인적인 한줄 정리

 

npm을 이용하여 directory를 만들고 해당 directory안에 dependencies을 구분하여
package를 내려받아 프로젝트에 사용한다. 

'ELICE AI6 > Node.js' 카테고리의 다른 글

Elice) Express.js  (0) 2023.01.07
Elice) NPM 2  (0) 2023.01.05
Elice) Node.js  (1) 2022.12.31