package.json 및 목적
node.js 현재 프로젝트에 대한 정보를 저장 및 제공한다.
주로 새로운 프로젝트를 시작하는 npm init 과정에서 자동생성한다. (직접 작성할 수도 있다.)
파일 내의 정보는 키-값 쌍으로 저장되는 단일 json 객체로 구성된다.
필수 입력해야하는 필드는 name, version이지만 후에 사용자 또는 관리자에게 최대한 정보를 제공해주는 것이 좋다.
그리고 현재 프로젝트에서 사용(의존)중인 패키지들의 버전을 기록한다. (의존성 관리)
프로젝트 및 npm 패키지에 대한 정보를 한눈에 담는다.
그리고 그 정보를 이 프로젝트에 연관된 작업자들이 함께 공유하고 업데이트하는 것이 목적이 아닐까 싶다.
개념
name
name 과 version 을 통해서 패키지의 고유성을 판별하게 되고 패키지의 내용을 변경하려면 version을 변경해야 합니다.
규칙
- name 은 반드시 214자 보다 짧아야 하고, 이는 scoped package 의 scope 를 포함합니다.
- name 은 점(.)이나 밑줄(_)로 시작할 수 없습니다.
- name 은 대문자를 포함해서는 안됩니다.
- name 은 URL의 일부분이자, 커맨드라인의 인수이고 폴더명입니다. 따라서 모든 URL-safe 하지 않은 name은 거부됩니다.
권장
- Node 의 코어 모듈과 같은 이름을 사용하지 않습니다.
- name 에 "node" 또는 "js" 를 넣지 않습니다. package.json 을 쓰고 있는 시점에서 이미 JavaScript 라는 것을 알 수 있기 때문입니다.
- name 은 JavaScript 파일 내에서 require() 함수의 인수로 사용되므로 짧고 알고 쉬운 것으로 작명하는 것이 좋습니다.
version
- 프로젝트 버전을 정의합니다. 3단계 버전을 사용하며, - 로 태그 이름을 적을 수 있습니다.
description
- 설명을 문자열로 기술합니다.
- npm search 로 검색된 리스트에 표시되기 때문에 사용자들이 당신이 만든 패키지를 찾아내고 이해하는 데 도움을 줄 수 있습니다.
main
- "main" 항목은 이 패키지의 메인 파일이 뭔지를 알려준다.
scripts
- 프로젝트에서 자주 실행해야 하는 명령어를 scripts로 작성해두면 npm 명령어로 실행 가능합니다.
keywords
- 키워드를 문자열 배열로 설명합니다.
- 키워드도 description과 마찬가지로 npm search 로 검색된 리스트에 표시되기 때문에 사용자들이 당신이 만든 패키지를 찾아내고 이해하는 데 도움을 줄 수 있습니다.
author
- "author" 는 제작자의 정보를 제공한다.
- 선택적으로 email 과 url 값을 갖습니다.
license
- 패키지 사용자들이 여러분이 만든 패키지를 사용하기 위해 어떻게 권한을 얻는지, 또는 어떤 금기 사항이 있는지 알게 하기 위해 라이센스를 명시해야 합니다.
- https://spdx.org/licenses/
- 위 페이지에서 SPDX 라이센스 아이디 전체 리스트를 볼 수 있습니다. 보통 OSI에서 승인한 것을 사용.
dependencies
-
프로젝트 의존성 관리를 위한 부분입니다. 이 프로젝트가 어떤 확장 모듈을 요구하는지 정리할 수 있습니다.
-
일반적으로 package.json에서 가장 많은 정보가 입력되는 곳입니다.
-
애플리케이션을 설치할 때 이 내용을 참조하여 필요한 확장 모듈을 자동으로 설치합니다.
-
따라서 개발한 애플리케이션이 특정한 확장 모듈을 사용한다면 여기에 꼭 명시를 해주어야 합니다.또한, npm install 명령은 여기에 포함된 모든 확장 모듈들을 설치하게 되어 있습니다.
예시 외 항목
repository
-
프로젝트의 소스 코드를 저장한 저장소의 위치를 지정한다.
-
소스 코드에 참여하고자 하는 사람들에게 도움이 될 수 있습니다.
-
프로젝트의 홈페이지 url을 명시해서는 안 됩니다.
homepage
- 프로젝트 홈페이지 주소입니다. url 항목과는 다르며, url을 설정하면 예상치 못한 움직임을 하게 되므로 주의합니다.
contributors
- 프로젝트에 참여한 공헌자 정보로, 여러 사람을 배열로 지정할 수 있습니다.
config
- 소스 코드에서 config 필드에 있는 값을 환경 변수처럼 사용할 수 있습니다.
private
- 이 값을 true로 작성하면 중앙 저장소로 저장하지 않습니다.
devDependencies
- 개발할 때만 의존하는 확장 모듈을 관리합니다.
engine
- 실행 가능한 노드 버전의 범위를 결정합니다.
bugs
- 프로젝트의 이슈와 트래킹을 볼 수 있는 url과 이슈를 알릴 email 주소를 입력할 수 있습니다.
- 이 항목들은 패키지 사용자가 문제에 직면했을 때 도움을 주기 위함입니다.
끝!
'nodejs' 카테고리의 다른 글
location 객체 사용법만 ! (0) | 2021.11.26 |
---|---|
JWT 이해 (0) | 2021.11.23 |
var, let, const 차이점 _ javascript (0) | 2021.11.09 |
javascript 입문 (0) | 2021.11.09 |
완전 초보자 GIT에 대한 이해 (작성 중) (0) | 2021.11.07 |