728x90
npm이 뭘까?
프로젝트를 하면서 npm, yarn, package.json 등 무엇인지 정확히 알지 못한 채 사용했다.
때문에 이번에 정확히 공부하고자 기록을 남기려고 한다.
npm
- node package manager
- npm은 node.js를 위한 패키지 매니저
- 여기서 패키지는 본인의 패키지(프로젝트)뿐만 아니라 다른 사람이 만든 패키지(프로젝트)도 포함이다.
- 본인의 패키지의 이름, 버전 등을 정할 수 있음
- 다른 사람이 만든 패키지를 내 패키지에 가져올 수 있음
- 내 패키지의 이름, 버전을 등을 명시하고 어떤 다른 패키지를 썼는지 관리할 수 있는 파일이 package.json 파일이다.
package.json
- json 파일이므로 속성, 값의 쌍으로 이루어져있다.
- package.json에서 속성은 field라고 불린다.
npm init -y
- package.json이 처음 생성되면
{
"name": "PROJECT_DIRECTORY",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
- 위와 같은 모습이다.
- field 별로 어떤 기능인지 살펴보자.
- 공식문서에 자세한 설명이 나와있다.
name
- 본인 패키지의 이름
- 배포할 것이 아니라면 뒤에 나올 version과 name은 옵션이다.
version
- 패키지의 버전
description
- 패키지에 대한 설명
- 사람들이 내 패키지를 찾는데 도움을 줌
license
- 패키지의 라이선스를 기술한다.
scripts
- npm run 명령과 함께 수행할 수 있는 스크립트
- 위의 코드에서 npm run test를 입력하면 Error가 발생하는 것을 확인할 수 있다.
- 이 기능을 활용하면 풍부한 기능을 구현할 수 있다. scripts에 대해서는 추후의 기록에서 다루도록 하자.
dependencies와 devDependencies field를 제외하면 개발환경에서 필요 없는 field들이다.
dependencies vs devDependencies
- 공통점 : (다른) 패키지의 이름과 버전 범위를 맵핑한 객체
dependencies
$ npm install <package>
$ npm i <package>
- 위와 같이 패키지를 추가했을 때 패키지가 field에 기록됨
- 프로젝트에 필요한 패키지들을 모아 놓은 field
devDependencies
$ npm install -D <package>
$ npm install --save-dev <package>
- 위와 같이 패키지를 추가했을 때 패키지가 field에 기록됨
- 테스트를 위한 패키지 등 배포할 때 필요 없는 패키지들을 이 field에 포함시킨다.
728x90
'DevRoot' 카테고리의 다른 글
[Dotenv] dotenv를 이용한 환경 변수 구성 (1) | 2022.12.30 |
---|---|
[npm] npm version(sementic versioning) (0) | 2022.12.25 |