본문 바로가기

DevRoot

[npm]npm package.json

728x90
npm이 뭘까?

 

프로젝트를 하면서 npm, yarn, package.json 등 무엇인지 정확히 알지 못한 채 사용했다.
때문에 이번에 정확히 공부하고자 기록을 남기려고 한다.

npm

  • node package manager
  • npm은 node.js를 위한 패키지 매니저
    • 여기서 패키지는 본인의 패키지(프로젝트)뿐만 아니라 다른 사람이 만든 패키지(프로젝트)도 포함이다.
    • 본인의 패키지의 이름, 버전 등을 정할 수 있음
    • 다른 사람이 만든 패키지를 내 패키지에 가져올 수 있음
  • 내 패키지의 이름, 버전을 등을 명시하고 어떤 다른 패키지를 썼는지 관리할 수 있는 파일이 package.json 파일이다.

 package.json

  • json 파일이므로 속성, 값의 쌍으로 이루어져있다.
  • package.json에서 속성은 field라고 불린다.
npm init -y
  • package.json이 처음 생성되면
{
  "name": "PROJECT_DIRECTORY",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
  • 위와 같은 모습이다.
  • field 별로 어떤 기능인지 살펴보자.
  • 공식문서에 자세한 설명이 나와있다.

name

  • 본인 패키지의 이름
  • 배포할 것이 아니라면 뒤에 나올 version과 name은 옵션이다.

version

  • 패키지의 버전

description

  • 패키지에 대한 설명
    • 사람들이 내 패키지를 찾는데 도움을 줌

license

  • 패키지의 라이선스를 기술한다. 

scripts

  • npm run 명령과 함께 수행할 수 있는 스크립트
    • 위의 코드에서 npm run test를 입력하면 Error가 발생하는 것을 확인할 수 있다.
    • 이 기능을 활용하면 풍부한 기능을 구현할 수 있다. scripts에 대해서는 추후의 기록에서 다루도록 하자.

dependencies와 devDependencies field를 제외하면 개발환경에서 필요 없는 field들이다.

dependencies vs devDependencies

  • 공통점 : (다른) 패키지의 이름과 버전 범위를 맵핑한 객체 

dependencies

$ npm install <package>
$ npm i <package>
  • 위와 같이 패키지를 추가했을 때 패키지가 field에 기록됨
  • 프로젝트에 필요한 패키지들을 모아 놓은 field

devDependencies

$ npm install -D <package>
$ npm install --save-dev <package>
  • 위와 같이 패키지를 추가했을 때 패키지가 field에 기록됨
  • 테스트를 위한 패키지 등 배포할 때 필요 없는 패키지들을 이 field에 포함시킨다.
728x90

'DevRoot' 카테고리의 다른 글

[Dotenv] dotenv를 이용한 환경 변수 구성  (1) 2022.12.30
[npm] npm version(sementic versioning)  (0) 2022.12.25