nodejs package managing tools, SemVer

J·2023년 10월 2일

프로젝트

목록 보기
12/14

npm

node package manager의 줄임말
패키지 또는 모듈을 관리할 수 있는 cli 기능과 패키지 또는 모듈의 저장소 역할도 한다.

간단한 커멘드

npm init    //프로젝트 생성, 프로젝트 이름, 버전, 설명 등등

npm install [package-name] or npm i [pakcage-name]
      -D    //개발용 패키지
      -g    //전역 설치
            //package-name이 없을 경우 package.json파일에 명시된 모듈 모두 설치

npm ci      //package-lock.json 기반으로 패키지 설치

package.json

프로젝트에 관한 정보, 패키지 종속성을 명시한 파일.

  • name 과 version
    패키지의 고유성을 판별하는 내용. package.json에서 반드시 명시되어야 하는 항목
  • config
    package script에 사용될 매개변수를 설정할 수 있음
  • devDependencies
    개발시에만 필요한 종속성으로 배포시에 포함되지 않는 종속성을 명시한다.

package-lock.json

dependency의 정확한 버전 명시한 파일.

package-lock.json이 있는 경우 package.json 사용하지 않고 package-lock.json을 사용해 패키지를 설치한다.
package.json의 package 버전은 특정 버전이 아닌 범위로 지정될 수 있기 때문에 정확한 버전이 없을 경우 다른 환경에서는 동작이 달라질 수 있어 프로젝트 관리시 package-lock.json도 함께 관리되어야 한다.


npx

package 실행 도구.
package의 최신버전을 불러와 설치하고 실행함.
업데이트가 잦은 pakcage의 경우 편리함.


yarn

페이스북에서 만든 pakcage manager

장점

  • npm보다 빠름
    pakcage 설치시 병렬 처리
    다운받은 package를 캐싱함
  • npm보다 안정적
    npm은 의존 관계의 package를 즉시 포함시킴. 위험한 관련 package를 무조건 추가하게 되어 위험할 수 있음
    yarn은 yarn.lock이나 package.json에 있는 것들만 설치함

간단한 커맨드

yarn init

yarn add package-name

yarn remove

버전 표기법 : SemVer

Sementic Versioning의 줄임말임

  • 표기법
    MAJOR.MINOR.PATCH
    MAJOR → 대규모 업데이트. 이전 버전에서는 작동하지 않는 변경사항이 추가되면 MAJOR 버전 UP MINOR → 소규모 업데이트. 이전 버전과 호환 되어야 하고 이전 버전과 호환되는 기능 추가시 MINOR 버전 UP
    PATCH → 버그 수정. 이전 버전과 호환되는 버그 수정시 PATCH 버전 UP
  • 종속성 범위 표시
    {
      "dependencies": {
        "foo": "1.0.0 - 2.9999.9999",     //1.0.0 이상 2.9999.9999 이하
        "bar": ">=1.0.2 <2.1.2",          //
        "baz": "1.0.2 || 2.3.4",          //1.0.2 또는 2.3.4
        "boo": "2.0.1",                   //2.0.1과 정확히 일치
        "asd": "http://asdf.com/asdf.tar.gz",   //이 주소를 dependency로 사용함
        "til": "~1.2",               //PATCH 버전 종속성 변경 허용. 최신 PATCH 버전 적용, 1.2.x와 같은 의미
    		"cat": "^1.0",               //MINOR 버전 종속성 변경 허용.  1.x.x와 같은 의미
        "two": "2.x",    //2.0, 2.1, 2.2 등등
        "lat": "latest", //최신 버전
        "dyl": "file:../dyl"      //local path의 파일 사용
      }
    }
profile
꾸준한 노력파 개발자의 이모저모

1개의 댓글

comment-user-thumbnail
2023년 10월 9일

사용만해서 경험으로만 알고 자세히 알아보려고 하지 않았는데,
이 글을 접하고나니 저도 글로 정리해야하는 필요성을 느끼게 되네요
종속성 범위 표시 방법에 저렇게 다양한 방법이 있는줄은 몰랐습니다
저도 밀린 포스팅 하러 ㄱ.ㄱ!

답글 달기