Programming/Node.js

Node.js package.json이란

나쵸캣 2022. 12. 25. 17:28
반응형

package.json이란?

 Node.js 프로젝트에 관한 정보와 Package manager(npm, yarn 등)을 통해 설치한 모듈들의 의존성(Dependecies)을 관리하는 파일.

 

package.json 주요 구성

 보통 package.json에 포함되는 fields

  1. 프로젝트에 관한 정보
    • name
      : 패키지 또는 프로젝트의 이름   *필수 fields
    • version
      : 패키지 또는 프로젝트의 이름   *필수 fields
        semantic versioning guidelines를 따른다. Major.Minor.Patch의 형태(1.2.3)
    • description
      : 패키지 또는 프로젝트에 대한 설명
    • author / contributor
      : 패키지 또는 프로젝트의 한 사람의 저자 (author) / 다수의 저자(contributor)
    • email
      :패키지 또는 프로젝트의 저자의 이메일
    • keywords
      : 패키지 또는 프로젝트의 주요 검색 키워드. 문자열 배열로 설명 ex)["node.js", "react.js"]
    • homepage
      : 프로젝트 홈페이지 주소
    • main
      : 패키지 또는 프로젝트의 진입점(entry point)가 되는 모듈의 ID
    • repository
      : 패키지 또는 프로젝트의 repository 정보.
    • private
      : 이 필드를 true로 설정하면 중앙 저장소에 저장하지 않음
    • license
      : 패키지 또는 프로젝트 사용을 위한 license
    • config
      : 프로젝트에서 config 필드에 있는 값을 환경 변수처럼 사용
  2. 개발에 사용되는 모듈 의존성들(dependencies)
    • dependencies
      : 현재 프로젝트를 실행하는데 필수적인 라이브러리들이 포함이 됩니다. 이는 컴파일을 수행하고 런타임 단계에서 수행되는 라이브러리들이 이에 해당 됩니다.
    • devDependencies
      : 현재 프로젝트를 개발하고 테스트를 하는데 사용되지만, 런타임에는 필요 없는 라이브러리들이 포함이 됩니다.
      ex) 컴파일 단계에서 사용하는 타입스크립트와 관련된 라이브러리 @types/xxx 경우 이에 해당 된다. 타입스크립트의 컴파일러를 통해서 실행 있다. 이는 런타임 단계에서는 수행되지 않고 이전 컴파일 단계에서까지만 수행되는 라이브러리가 해당 됩니다.
    • peerDependencies
      :런타임에는 필요하기는 하지만 소스코드내에 의존성을 직접 관리하지 않는 라이브러리들이 포함된다. 소스코드 내에 require , import 불러오지는 않지만 라이브러리 의존성으로 필요한 경우가 이에 해당 됩니다.
  3. CLI에서 사용하는 명령어 정의
    • scripts
      : 패키지 또는 프로젝트 생명 주기에서 다양한 타이밍에 사용되는 command를 alias(별칭)을 통해 지정해 둘 수 있는 dictionary

 

package.json 예시

{
  "name": "nachocat_example",
  "version": "0.1.0",
  "description": "nachocat_example_project",
  "author": "nachocat",
  "email": "nachocat@ncahot.com",
  "keywords": ["node.js, react.js"],
  "homepage": "https://nachocat.com",
  "main": "src/index.js",
  "repository": {"type": "git", "url" : "https://github.com/nachocat/example.git" },
  "private": true,
  "license": "ISC",
  "config": {
    "port": "8080"
  },
  "dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router-dom": "^5.3.4",
    "react-router-stack": "^0.2.5",
    "react-scripts": "5.0.1"
  },
  "devDependices": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
  },
  "peerDependencies": {
    "react-spring": "^9.2.4",
    "react-use-gesture": "^9.1.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
  }
}

 

반응형