JavaScript

[javaScript] package.json 에 대해서 알아보자.

유병각 2021. 8. 21. 16:09

Package.json 에 대해서 알아보자.

1. package.json 이란??

 

노드로 확장 모듈을 작성하면 npm 을 통해 중앙 저장소로 배포 할 수 있다. package.json 파일은 배포한 모듈 정보를 담고자 만들어졌지만, 노드로 작성하는 애플리케이션도 package.json 파일을 사용하여 관리 할 수 있다.

꼭 확장 모듈 형태로 배포하기 위한 것이 아니더라도 애플리케이션을 개발할 때 package.json 파일을 이용하면 사용하는 확장 모듈에 대한 의존성 관리가 가능하기 때문에 편리하다.

package.json 파일은 기본적으로 CommonJs 의 명세를 따르며, Json 형식의 파일이다.

- package.json 을 만드는 방법

npm init // package.json 파일을 직접 작성하여 생성 하는 커맨드
npm init -y // package.json 을 default 값으로 설정하여 생성하는 커맨드

- package.json 파일의 구조

{
  "name": "notion-user",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

- package.json 파일에 대한 설명

KEY  VALUE
name 프로젝트의 이름
중앙 저장소에 배포할 때 version 과 함께 필수 항목이다.
url 로 사용되고, 설치할 때 디랙토리 이름이 되기 때문에 url 이나 디렉터리에서 쓸 수 없는 이름으로 하면 안된다.
대문자를 포함해서는 안되며 require() 함수의 인수로 사용되기 때문에 짧고 알기 쉬운 이름으로 짓는 것이 좋다.
version 프로젝트 버전을 정의한다. 3단계 버전을 정의하며, - 로 태그이름을 적을 수 있다.
description 프로젝트 설명으로, 문자열을 기술한다.
npm search 로 검색된 리스트에 표시되기 때문에 사람들이 패키지를 찾을 때 도움이 된다.
keywords description 과 마찬가지로 프로젝트를 검색할 때 참조되는 키워드이다.
homepage 프로젝트 홈페이지의 주소이다.
url 항목과는 다르며, url 을 설정하면 예상치 못한 작동을 하므로 주의해야한다.
author 프로젝트 작성자의 정보로 한 사람만을 지정한다. json 형식으로 name, email, url 옵션을 포함한다.
contributors 프로젝트에 참여한 공헌자 정보로, 여러 사람을 배열로 지정 할 수 있다.
repository 프로젝트의 소스 코드를 저장한 저장소의 정보이다.
scripts 프로젝트에서 자주 실행되는 명령어를 scripts 로 작성해두면 npm 명령어로 실행 가능하다.
config 소스 코드에서 config 필드에 있는 값을 환경변수 처럼 사용 할 수 있다.
private 이 값을 true 로 사용하면 중앙 저장소로 이동하지 않는다.
dependencies 프로젝트의 의존성 관리를 위한 부분이다. 프로젝트가 어떤 확장 모듈을 요구하는지 정리 할 수 있다. 
일반적으로 package.json 에서 가장 많은 정보가 입력되는 부분이다.
애플리케이션을 설치할 때 이 내용을 참조하여 필요한 확장 모듈을 자동으로 설치한다. 따라서 개발한 애플리케이션이 특정한 확장 모듈을 사용하면 여기에 꼭 명시해 주어야 한다. 


npm install 명령어는 여기에 포함된 모든 확장 모듈을 설치하게 되어있다.
devDependencies 개발할 때만 의존하는 확장 모듈을 의미
engine 실행 가능한 노드 버전의 범위를 결정한다.