npm, package.json, package-lock.json

강준우·2023년 5월 12일
0

npm


Node Package Manager.

npm is the world's largest software registry.

npm은 Node를 사용하는데 필요한 다양한 package들을 관리하는 틀이다.

npm 패키지

위의 사이트에서 다양한 패키지들이 존재하는 것을 알 수 있다.

package.json


공식 문서에 따르면 package.json은 다음과 같다.

  • project가 의존하는 package의 lists.
  • project가 사용하는 package의 버전정보.
  • build과정을 재활용할 수 있게 하여 다른 개발자와 공유하기 쉬워짐.

package.json은 다양한 fields로 구성된다.

  • name : 이 package의 이름을 나타낸다.

  • version : x.x.x 형태의 semantic versioning guideline을 따르는 형태이어야 한다.

  • author : 배포한 사람의 email을 주로 쓴다.

  • descriptioin : package의 설명을 적을 수 있다.

  • main : package의 진입점이 되는 모듈의 ID를 나타낸다.

    • 예를 들어, 'food'라는 package를 install한 사용자가 require("food")를 통해 모듈을 import하면 "main"에 지정된 모듈의 export 객체를 가져온다.
  • scripts : 자주 사용하는 command의 alias를 지정할 수 있다.

  • keyword : package의 설명 키워드를 문자열 배열로 적는다.

  • license : 패키지를 사용하는데 권한과 제약사항을 명시한다.

  • dependencies/devDependencies : package가 의존하고 있는 외부 라이브러리들을 관리한다. devDependencies는 개발시에만 필요하고 배포시에는 필요없는 패키지를 포함시킨다.

package-lock.json


package.json은 버전정보를 적을 때 보통 정확한 버전을 적기 보다는 version range를 사용한다. 따라서 여러 개발자가 동시에 개발하거나 package를 불러와서 작업 할 때, 버전정보가 맞지 않아 오류가 발생할 수 있다.

이를 해결하기 위해 생겨난 것이 package-lock.json이다. package-lock.json에는 버전 정보가 정확히 적혀있다.

정리하자면 package.json에서는 version range를 사용해서 패키지의 버전 수정마다 일일이 package.json을 수정해야 하는 번거로움을 없애고, node_modules트리 또는 package.json이 수정될 때, 자동으로 생성되는 package-lock.json을 통해 정확한 버전관리를 가능하게 한다.

profile
강준우

0개의 댓글