[module] package.json

iberis2·2024년 2월 5일
  1. package.json 이라는 파일을 가진 디렉토리가 패키지 이다.
  2. 하나의 서드 파티 모듈은 하나의 패키지이다.
  3. 서드 파티 모듈을 관리할 때 쓰는 npmnode package manager의 줄임말이다.

package.json 의 필드

package.json 공식 문서

// node_modules/express/package.json

{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.18.2",
  "author": "TJ Holowaychuk <tj@vision-media.ca>",
  "contributors": [ ...생략 ],
  "license": "MIT",
  "repository": "expressjs/express",
  "homepage": "http://expressjs.com/",
  "keywords": [ "express", "framework", "sinatra", ... 생략 ],
  "dependencies": {
    "accepts": "~1.3.8",
    "array-flatten": "1.1.1",
    "body-parser": "1.20.1",
    "content-disposition": "0.5.4",
	...생략
  },
  "devDependencies": {
    "after": "0.8.2",
    "connect-redis": "3.4.2",
  	... 생략
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "lint": "eslint .",
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
    "test-cov": "nyc --reporter=html --reporter=text npm test",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  }
}

1. name

패키지의 이름
특정 패키지를 사용하기 위해 코드에서 require 함수의 인자로 넣는다.

2. version

패키지의 버전

3. description

패키지에 대한 설명
패키지를 검색할 때 description 내용도 검색 기준으로 활용되므로 알맞은 설명을 써두는 게 좋다.

4. keywords

패키지에 대한 키워드들입니다. (aka 해시태그)
검색 기준으로도 활용되기 때문에 적절한 키워드들을 써주면 좋다.

5. homepage

패키지 관련 사이트의 URL입니다.

6. bugs

패키지를 사용하다가 발생하는 버그들을 신고할 수 있는 URL이나 이메일 주소

7. license

패키지의 라이센스 정보

🔗 패키지가 가질 수 있는 라이센스의 종류

8. author, contributors

author는 패키지를 만든 사람
contributors는 패키지를 만드는데 기여하는 사람들

9. ⭐️ main

패키지를 로드했을 때 실제로 로드되는 파일의 이름이 적혀있는 필드

require('패키지 이름')

예를 들어, A라는 패키지가 있고,
A 패키지의 package.json 파일의 내용 중, main 필드에 start.js라는 값이 적혀있을 때,

해당 프로젝트에 있는 다른 어떤 자바스크립트 파일 안에서 require('A') 코드는 결국 start.js 파일을 로드한다는 뜻이고,
이 start.js 파일 내의 코드에서 exports, module.exports 등으로 외부에 공개한 객체를 가져오게 된다.

대부분의 패키지가 위 방식으로 사용되기 때문에 보통 package.json 파일에는 main 필드가 존재한다.

  • 만약 main 필드가 없다면, 작업 디렉토리 안에서 index.js라는 파일을 찾아서 로드한다.

10. man

이 패키지의 사용 설명서가 담긴 파일들의 경로가 적혀있습니다.

11. repository

이 패키지의 코드가 관리되고 있는 레포지토리(repository)의 주소
보통 버전 관리 시스템의 저장소 URL(GitHub URL 등)이 여기 적혀있다.

12. scripts

npm으로 간편하게 실행할 수 있는 스크립트 파일들의 정보

13. dependencies

현재 패키지가 의존하고 있는 다른 패키지들이 나열되어 있는 필드

  • 어떤 패키지를 설치할 때 결국, 이 필드가 있어야, 필요한 하위 패키지들을 설치할 수 있으므로, Node.js 패키지 생태계의 핵심이 되는 필드이다.
profile
React, Next.js, TypeScript 로 개발 중인 프론트엔드 개발자

0개의 댓글