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
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.man | man 문서들이 위치한 폴더를 가리킨다. |
directories.doc | Markdown 파일을 위치시킨다. |
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
/* 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