JavaScript & Node.js
[NPM과 Package.json]란 무엇인가
Haksae
2022. 1. 31. 00:22
[NPM]
Node Package Manage의 약자로 자바스크립트 개발자들이 유용한 패키지를 빠르고 쉽게 공유할 수 있게 하는 패키지 매니저이다.
패키지란 자바스크립트 개발자들이 만든 일련의 유용한 도구 및 프레임 워크를 의미하는 것으로, NPM은 이러한 패키지를 관리하는 장소이자 도구, 방법이다.
- 현재 NPM은 자바스크립트 런타임 Node.js의 기본 패키지 매니저로 사용되고 있다.
- NPM은 두 가지 주된 요소로 구성된다.
- 1) 패키지 출시 및 다운로드를 위한 CLI(Command-Line Interface) 도구
- 자바스크립트 패키지 호스팅을 위한 온라인 저장소
[package.json]
NPM가 패키지를 줍고 받는 장소라면, package.json은 주고 받는 패키지에 대한 상세 설명서라고 할 수 있다.
package.json 파일에는 프로젝트와 관련된 메타 데이터가 담긴다. (패키지의 이름, 버전, 데이터 등)
- package.json 파일은 보통 Node.js 프로젝트의 루트 디렉토리에 있다.
- NPM은 이를 통해 프로젝트를 식별하고, 프로젝트의 의존성(dependency) 사항들을 처리한다.
- package.json은 직접 작성할 수도 있고, npm init 명령을 통해서 자동으로 생성할 수 있다.
- 또한 해당 애플리케이션을 위해 사용한 확장 모듈에 대한 정보는 npm install -save를 통해 자동으로 모듈에 대한 정보를 추가할 수 있다.
[package.json 파일의 내용과 설명]
파일의 내용은 프로젝트에 대한 명세이다.
{
"name" : "test",
"description" : "javascript's test programming.",
"keywords" : ["util", "f", "server", "client", "browser"],
"author" : "Goorm",
"contributors" : [],
"dependencies" : [],
"repository" : {"type": "git", "url" : "git://gitbub.com/documentcloud/test.git" },
"main" : "test.js",
"version" : "1.1.6"
}
Key | Value |
name | 프로젝트 이름으로, 가장 중요합니다. 중앙 저장소에 배포할 때 version과 함께 필수 항목입니다. url로 사용되고, 설치할 때 디렉토리 이름이 되기 때문에 url이나 디렉터리에서 쓸 수 없는 이름을 사용하면 안 됩니다. 또한, 이름에 node나 js가 들어가면 안 됩니다. name은 214자보다 짧아야 하며, 점(.)이나 밑줄(_)로 시작할 수 없습니다. 대문자를 포함해서는 안 되며, require() 함수의 인수로 사용되며 짧고 알기 쉬운 것으로 짓는 것이 좋습니다. |
version | 프로젝트 버전을 정의합니다. 3단계 버전을 사용하며, - 로 태그 이름을 적을 수 있습니다. |
description | 프로젝트 설명으로, 문자열로 기술합니다. npm search로 검색된 리스트에 표시되기 때문에 사람들이 패키지를 찾아내고 이해하는 데 도움이 됩니다. |
keywords | 프로젝트를 검색할 때 참조되는 키워드입니다. description과 마찬가지로 npm search로 검색된 리스트에 표시됩니다. |
homepage | 프로젝트 홈페이지 주소입니다. url 항목과는 다르며, url을 설정하면 예상치 못한 움직임을 하게 되므로 주의합니다. |
author | 프로젝트 작성자 정보로, 한 사람만을 지정합니다. JSON 형식으로 name, email, url 옵션을 포함합니다. |
contributors | 프로젝트에 참여한 공헌자 정보로, 여러 사람을 배열로 지정할 수 있습니다. |
repository | 프로젝트의 소스 코드를 저장한 저장소의 정보입니다.
소스 코드에 참여하고자 하는 사람들에게 도움이 될 수 있습니다. 프로젝트의 홈페이지 url을 명시해서는 안 됩니다.
|
scripts | 프로젝트에서 자주 실행해야 하는 명령어를 scripts로 작성해두면 npm 명령어로 실행 가능합니다. |
config | 소스 코드에서 config 필드에 있는 값을 환경 변수처럼 사용할 수 있습니다. |
private | 이 값을 true로 작성하면 중앙 저장소로 저장하지 않습니다. |
dependencies | 프로젝트 의존성 관리를 위한 부분입니다. 이 프로젝트가 어떤 확장 모듈을 요구하는지 정리할 수 있습니다.
일반적으로 package.json에서 가장 많은 정보가 입력되는 곳입니다.
애플리케이션을 설치할 때 이 내용을 참조하여 필요한 확장 모듈을 자동으로 설치합니다.
따라서 개발한 애플리케이션이 특정한 확장 모듈을 사용한다면 여기에 꼭 명시를 해주어야 합니다.
또한, npm install 명령은 여기에 포함된 모든 확장 모듈들을 설치하게 되어 있습니다.
|
devDependencies | 개발할 때만 의존하는 확장 모듈을 관리합니다. |
engine | 실행 가능한 노드 버전의 범위를 결정합니다. |
참고
https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners