Node.js 교과서 개정 2판 5장 요약

Nari.·2020년 12월 11일
0

Node.js

목록 보기
5/10
post-thumbnail

5장. 패키지 매니저

5.1 npm 알아보기

npm은 Node Package Manager의 약어로, 이름 그대로 노드 패키지 매니저이다.
대부분의 자바스크립트 프로그램은 패키지라는 이름으로 npm에 등록되어 있어서 특정 기능을 하는 패키지가 필요하다면 npm에서 찾아 설치하면 된다.

2020년 5월 기준, npm에는 125만개에 달하는 패키지가 등록되어 있으며 세계 최대 규모이다.



5.2 package.json 으로 패키지 관리하기

package.json 이란?

설치한 패키지의 버전을 관리하는 파일. 같은 패키지라도 버전별로 기능이 다를 수 있어서 프로젝트를 설치할 때 패키지도 동일한 버전을 설치하지 않으면 문제가 생길 수 있기에 버전을 관리하는 파일이 필요하다.

노드 프로젝트를 시작하기 전에는 폴더 내부에 무조건 package.json부터 만들고 시작해야한다.

package.json 을 만드는 명령어

$ npm init

WARN

패키지를 설치하다보면 메시지 중에 WARN이 나오는데 이것은 단순한 경고이다. ERROR만 진짜 에러이므로 크게 걱정하지 않아도 된다.


package-lock.json

package-lock.json의 내용을 보면 node_modules에 들어 있는 패키지들의 정확한 버전과 의존 관계가 담겨있다. npm으로 패키지를 설치, 수정, 삭제할 때마다 패키지들 간의 내부 의존 관계를 이 파일에 저장한다.

node_modules는 언제든지 npm install로 설치할 수 있으며, 깃 같은 버전 관리 프로그램과 같이 사용할 때도 중요한 파일은 package.json 이다.


전역(global) 설치

전역 설치 옵션은 패키지를 현재 폴더인 node_modules에 설치하는 것이 아니라 npm이 설치되어있는 폴더(/usr/local/lib/node_modules)에 설치하는 것이다.

이 폴더의 경로는 보통 시스템 환경 변수에 등록되어 있어서 전역으로 설치한 패키지는 콘솔의 명령어로 사용할 수 있다. 또한 전역 설치한 패키지는 package.json에 기록되지 않는다.
** 전역으로 설치했다고 패키지를 모든 곳에서 사용한다는 의미는 아니다.




5.3 패키지 버전 이해하기

노드 패키지들의 버전은 항상 세 자리로 이루어져 있다. 그 이유는 SemVer 방식의 버전 넘버링을 따르기 때문이다.

SemVer

SemVer는 Semantic Versioning(유의적 버전)의 약어이다. 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는 뜻이다.

1. 0. 7

  1. 가장 맨 앞. 첫 번째 자리는 major 버전
    0 = 초기 개발 중
    1부터 정식 버전을 의미한다.
    major 버전은 하위 호환이 안 될 정도로 패키지의 내용이 수정되었을 때 올린다.
  1. 가운데. 두 번째 자리는 minor 버전
    minor 버전은 하위 호환이 되는 기능을 업데이트할 때 올린다.
  1. 제일 마지막. 세 번째 자리는 patch 버전
    새로운 기능이 추가되기보다 기존 기능에 문제가 있어서 수정한 것을 내 놓았을 때 patch버전을 올린다.

package.json 에는 SemVer식 외에도 버전앞에 ^,~,>,< 문자가 붙어있다.

  • ^ :: minor 버전까지만 설치하거나 업데이트한다.
    npm i express@^1.1.1 이라면, 1.1.1 이상부터 2.0.0 미만 버전까지 설치된다. 2.0.0은 설치되지 않는다. 1.x.x와 같이 표현할 수 있다.
  • ~ :: patch 버전까지만 설치하거나 업데이트한다.
    npm i express@~1.1.1 이라면, 1.1.1 이상부터 1.2.0 미만 버전까지 설치된다. 1.1.x와 같은 표현도 가능하다. ~보다 ^이 많이 사용되는 이유는 minor 버전까지는 하위 호환이 보장되기 때문이다.
  • . >, < >=, <=, = 는 알기 쉽게 초과, 미만, 이상, 이하, 동일을 의미한다.
  • @latest : 안정된 최신 버전의 패키지를 설치한다. x 로도 표현가능하다.
    npm i express@latest 또는 npm i express@x
  • @next : 가장 최근 배포판을 사용할 수 있다. @latest 와 다른 점은 안정되지 않은 알파나 베타 버전의 패키지를 설치할 수 있다는 것이다.




5.4 기타 npm 명령어

  1. 업데이트할 수 있는 패키지가 있는지 확인 가능
$ npm outdated

  1. 패키지 업데이트하기
$ npm update [패키지명]

  1. 패키지 제거 2가지 방식.
$ npm uninstall [패키지명]
$ npm rm [패키지명]

  1. npm 패키지 검색
$ npm search [패키지명]

  1. 패키지 세부 정보 알고 싶을 때
$ npm info [패키지명]

** package.json 의 내용과 의존 관계, 설치 가능한 버전 정보 등이 표시된다.


  1. npm 로그인
npm adduser
npm whoami		//로그인한 사용자가 누구인지 알려줌
npm logout		//npm adduser로 로그인한 계정을 로그아웃

npm 공식 사이트에서 가입한 계정으로 로그인하면 된다.
나중에 패키지를 배포할 때 로그인이 필요하지만, 패키지를 배포하지 않을 계획이라면 가입할 필요가 없다.


  1. package.json의 버전을 올릴때
$ npm version [버전]

  1. 패키지를 설치 할 때 경고 메시지를 띄우게 하는 명령어
$ npm deprecate [패키지명] [버전] [메시지]

  1. package.json 대신 package-lock.json에 기반하여 패키지를 설치
$ npm ci

** 더 엄격하게 버전을 통제하여 패키지를 설치하고 싶을 때 사용



5.5 패키지 배포하기

  1. 코딩에 앞서서 npm(https://www.npmjs.com) 계정을 만들어야 한다.
  2. package.json의 main부분의 파일명과 일치하도록 코드를 작성한 뒤
  3. npm publish 명령어를 사용하여 배포한다.

0개의 댓글