Node.js 프로젝트를
활성화시키면서 자동적으로 만들어지는
"package.json"
에 대해서 알아보고자 한다.
npm 이란?
npm은 Node Package Manager의 약어로, 명칭 그대로 노드 패키지 매니저이다.
노드가 자바스크립트 프로그램을 컴퓨터에서도 실행할 수 있게 해준다.
자바스크립트 프로그램은 패키지로 npm에 등록되어 있으며
특정 기능의 패키지가 필요하다면 npm 에서 찾아 설치하면 된다.
package.json
프로젝트에 필요한 패키지를 추가하다보면 패키지가 어마어마해진다.
사용하는 패키지는 저마다 고유한 버전이 있으며,
동일한 버전을 설치하지 않으면 문제가 생길수 있다.
이때 설치한 패키지의 버전을 관리하는 파일을
package.json 이라고 한다.
package.json 설치하기
프로젝트를 시작하기 전에 폴더 내부에 무조건 package.json부터 만들고 시작해야 한다!
npm init -y
* -y : 모든 항목에 Yes를 한다는 의미이다.
프로젝트 이름, 설명 등을 작성하고 싶다면,
'npm init'로 실행시키고 콘솔창에서 작성할 수 있다.
아래의 형식으로 package.json 미리보기가 나온다.
{
"name": "프로젝트 이름",
"version": "프로젝트 버전",
"description": "프로젝트 설명",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "작성자 이름",
"license": "ISC",
}
}
package.json 작성시 알아두기
package name :
패키지 이름으로 Package.json의 name 속성에 저장된다.
version :
패키지 버전은 SemVer의 방식의 버전 넘버링을 따라 항상 세자리로 이루어져 있다.
package.json에 가장 중요한 항목은 "name" 과 "version" 이다.
이 2가지 항목을 통해 패키지 고유성을 판별하게 된다.
필수 항목이며, 해당 내용이 없으면 패키지를 설치 할 수 없다.
description :
문자열로 기입해야하며,
npm search로 검색된 리스트에 표시되어 만들어진 패키지를 찾고 이해하는 도움을 준다.
entry point :
자바스크림트 실행파일 진입점. 보통 마지막으로 module.exports를 하는 파일을 지정한다.
package.json의 main속성에 저장된다.
test commend :
코드 테스트 시 입력하는 명령어를 의미한다.
package.json scripts 속성안의 test 속성에 저장된다.
git repository :
코드를 저장해둔 깃 저장소 주소를 의미한다.
소스에 문제가 생기면 사용자들이 이 저장소에 방문에 문제를 제기하거나
코드 수정본을 올릴 수 있다. package.json repository 속성에 저장된다.
keywords : 키워드를 문자열 배열로 설명되며,
npm search로 검색된 리스트에 표시되어 만들어진 패키지를 찾고 이해하는 도움을 준다.
bugs :
프로젝트의 이슈와 버그 트레킹을 볼수있는 url 또는 이슈를 알릴 email 주소를 입력한다.
패키지 사용자가 문제가 있을 시 도움을 줄 수 있다.
license :
패키지 사용자들이 만들어진 패키지를 사용하기 위해 어떻게 권한을 얻고,
어떤 금기 사항이 있는지 이해하기 위해 라이센스를 명시해야 한다.
dependencies :
패키지 설치시, 패키지 이름과 함께 설치된 버전이 저장된다.
devDenpendencies :
패키지 모듈을 이용하는 사람이라면, 패키지 테스트 및 문서 작성에 사용되는
외부 프레임 워크는 다운로드를 원하지 않을 것이다.
이러한 경우, devDependencies 객체에 디펜던시를 추가하는 것도 좋은 방법이다.
더 자세한 사항은 아래의 링크를 참조할 수 있다.
'개발 이야기 > 항해99' 카테고리의 다른 글
[항해99] 6주차 - CORS 란? (0) | 2022.04.10 |
---|---|
[항해99] 5주차 - ORM(Object Relational Mapping)이란? (0) | 2022.04.03 |
[항해99] 3주차 - 자바스크립트 ES5와 ES6의 문법차이 (0) | 2022.03.20 |
[항해99] 2주차 - JWT(JSON Web Token)란? (0) | 2022.03.13 |
[항해99] 시작 전 사전수업 - 5주차: AWS서버연결, Gitbash, 가비아 도메인연결 (0) | 2022.02.10 |