package.json

김회민·2022년 5월 17일
0

Package.json

  • 현재 패키지의 설명 문서.
  • 완전한 JSON 형식으로 작성되어야 한다.

Keywords

name

  • 필수 입력 항목.
  • 현재 프로젝트의 이름을 적는다.
  • 규칙
    • MAX_LENGTH = 214
    • 점(.) 이나 밑줄(_)로 시작할 수 없다
    • 대문자를 포함해서는 안된다
    • URL의 일부분이자, 커맨드라인의 인수이며, 폴더명이다.
  • 조언
    • Node의 코어 모듈과 같은 이름을 사용하지 않는다.
    • “node”또는 “js”를 넣지 않는다.
    • Javascript 파일 내에서 require() 함수의 인수로 사용되므로 짧게하면서도 알기 쉬운 것으로 지어라
    • 설정 전에 같은 이름이 이미 있는지 확인하라

version

  • 필수 입력 항목
  • npm의 Defendency에 포함된 node-semver로 parsing 가능해야 한다.

description

  • 현재 프로젝트의 설명을 문자열로 기술한다.

keywords

  • 현재 프로젝트의 키워드를 문자열 배열로 기술한다.

homepage

  • 현재 프로젝트의 홈페이지가 있을 경우 기술한다.

bugs

  • 현재 프로젝트의 이슈와 버그 트래킹을 볼 수 있는 url과 이슈를 알릴 email 주소를 입력한다.
  • url이나 email 중 하나만 적용할 수 있다.
  • url만 지정하고 싶다면 객체가 아니라 문자열을 지정할 수 있다.
"bugs": {
    "url": "https://github.com/owner/project/issues",
    "email": "project@hostname.com"
}

license

  • 라이센스 내용을 문자열로 기술한다.
  • "license": "MIT"
  • 비공개로 사용하고 싶다면 "UNLICENSED" 로 명시한다.
  • 여러 개의 라이센가 있다면 SPDX license expression syntax version 2.0 string 을 사용해서 표현한다.

files

  • 프로젝트에 포함된 파일의 배열이다. 폴더 이름을 지정하면 폴더 안의 파일도 포함된다.

main

  • 현재 프로그램의 시작점이 되는 모듈의 ID이다.
  • “foo”라는 패키지가 있다면, require(”foo”)를 실행했을 때 “main”으로 지정한 모듈의 exports 객체가 반환된다.
  • 패키지 루트의 상대적인 경로로 지정해야 한다.

man

  • man 프로그램이 찾을 수 있는 위치에 설치할 하나의 파일 이름이나 배열을 지정한다.

bin

  • 실행할 수 있는 패키지를 만들기 위해 기술한다.
  • global install 인 경우, prefix/bin
  • local install 인 경우, ./node_modules/.bin

directories

directories.lib모듈의 라이브러리가 어디에 있는지 보여준다.
directories.bin해당 디렉토리의 모든 파일이 실행 파일로 추가된다.
directories.manman 문서들이 위치한 폴더를 가리킨다.
directories.docMarkdown 파일을 위치시킨다.
directories.example예제 파일들을 여기에 위치시킨다.

repository

  • 소스 코드가 관리되는 저장소 위치를 기술한다.
"repository": {
    "type": "git",
    "url": "http://github.com/npm/npm.git"
}

scripts

/* package.json */
"scripts": {
    "dev": "nodemon index.js",
    "build": "tsc index.ts"
}

/* cli */
$ npm run dev
$ npm run build

$ yarn dev
$ yarn build

config

/* package.json */
"name": "foo",
"config": {
    "port": "8080"
}

/* cli */
$ npm config set foo:port 8001

dependencies

  • 의존성 패키지 목록을 기술한다.
  • yarn이나 npm을 이용해 패키지를 다운로드 할 때마다 dependencies 필드에 자동으로 추가된다.
  • “패키지 이름": “^패키지 버전" 형태로 기술된다.
"dependencies": {
    "axios": "^0.27.2",
    "coolsms-node-sdk": "^2.0.1",
    "cors": "^2.8.5",
    "dotenv": "^16.0.1",
    "express": "^4.18.1",
    "nodemailer": "^6.7.5",
    "swagger-jsdoc": "^6.2.1",
    "swagger-ui-express": "^4.4.0"
}

devDependencies

  • 패키지 테스트 및 문서 작성에 사용되는 외부 패키지를 모아두는 항목이다.
  • npm install <package> -—save-dev 또는 yarn add <package> --dev 로 다운로드 했을때 자동으로 기술된다.

peerDependencies

  • 내가 만들 모듈이 이 필드에 기술되어있는 모듈과 함께 사용할 수 있다는 호환성을 보장한다.

engines

  • 동작 가능한 node의 버전을 명시할 수 있다.
"engines": { "node": ">=0.10.3 <0.12" }

os

  • 동작 가능한 os의 목록을 명시할 수 있다.
/* whitelist */
"os": ["darwin", "linux"]

/* blacklist */
"os": ["!win32"]

cpu

  • 특정한 CPU 아키텍쳐에서만 동작한다면 명시할 수 있다.
/* whitelist */
"cpu": ["x64", "ia32"]

/* blacklist */
"cpu": ["!arm", "!mips"]

preferGlobal

  • 패키지가 반드시 Global로 설치되어야 한다면,
    true를 지정해서 local 설치시에 경고 메시지를 제공할 수 있다.

private

  • 이 값이 true 일 경우, publish 명령을 거부하게 된다.

publishConfig

  • 태그나 레지스트리와 접근권한을 지정할 때 사용
  • publish 과정에서 사용되는 설정 값들을 기술한다.

URL

profile
백엔드 개발자 지망생

0개의 댓글