- package.json 이라는 파일을 가진 디렉토리가 패키지 이다.
- 하나의 서드 파티 모듈은 하나의 패키지이다.
- 서드 파티 모듈을 관리할 때 쓰는 npm 은 node package manager의 줄임말이다.
// 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/"
}
}
패키지의 이름
특정 패키지를 사용하기 위해 코드에서 require 함수의 인자로 넣는다.
패키지의 버전
패키지에 대한 설명
패키지를 검색할 때 description 내용도 검색 기준으로 활용되므로 알맞은 설명을 써두는 게 좋다.
패키지에 대한 키워드들입니다. (aka 해시태그)
검색 기준으로도 활용되기 때문에 적절한 키워드들을 써주면 좋다.
패키지 관련 사이트의 URL입니다.
패키지를 사용하다가 발생하는 버그들을 신고할 수 있는 URL이나 이메일 주소
패키지의 라이센스 정보
author는 패키지를 만든 사람
contributors는 패키지를 만드는데 기여하는 사람들
패키지를 로드했을 때 실제로 로드되는 파일의 이름이 적혀있는 필드
require('패키지 이름')
예를 들어, A라는 패키지가 있고,
A 패키지의 package.json 파일의 내용 중, main 필드에 start.js라는 값이 적혀있을 때,해당 프로젝트에 있는 다른 어떤 자바스크립트 파일 안에서 require('A') 코드는 결국 start.js 파일을 로드한다는 뜻이고,
이 start.js 파일 내의 코드에서 exports, module.exports 등으로 외부에 공개한 객체를 가져오게 된다.
대부분의 패키지가 위 방식으로 사용되기 때문에 보통 package.json 파일에는 main 필드가 존재한다.
이 패키지의 사용 설명서가 담긴 파일들의 경로가 적혀있습니다.
이 패키지의 코드가 관리되고 있는 레포지토리(repository)의 주소
보통 버전 관리 시스템의 저장소 URL(GitHub URL 등)이 여기 적혀있다.
npm으로 간편하게 실행할 수 있는 스크립트 파일들의 정보
현재 패키지가 의존하고 있는 다른 패키지들이 나열되어 있는 필드