package.json이란?
package.json이 무엇인지 알기 이전에 직접 package.json을 만들어 보자.
package.json을 만들 폴더로 이동을 한 후에 아래 명령어를 입력한다.
$ npm init
$ npm init -y
해당 명령어를 실행시키면 package.json이라는 파일이 생성된다. 그리고 생성된 파일의 모습은 아래와 같다.
package.json
{
"name": "packagejson-started",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": ""
}
package.json은 npm 패키지들을 나의 프로젝트에서 사용하기 위해서 필수로 필요한 문서이다.
- package.json에는 나의 프로젝트에서 사용되고 있는 npm 패키지들에 대한 정보들을 나타낸다.
- => npm 패키지들의 정보는 설치된 옵션, 설치된 패키지들의 종류, 설치된 패키지의 설치 범위 등이다.
- package.json은 json 형태의 문서(Data)이다.
- npm 패키지와 javascript 라이브러리는 동일한 말이다.
package.json의 중요 속성 살펴 보기
아래의 package.json은 'webpack'과 'lodash'라는 npm 패키지를 설치한 이후의 package.json 파일이다.
$ npm install lodash
$ npm install -D webpack
package.json
{
"name": "getting-started", //name 속성
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
}, //scripts 속성
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"devDependencies": {
"webpack": "^5.94.0",
"webpack-cli": "^5.1.4"
}, //devDependencies 속성
"dependencies": {
"lodash": "^4.17.21"
} //dependencies 속성
}
- scripts
- devDependencies
- dependencies
scripts 속성
나의 프로젝트에서 실행되는 script 명령어를 설정하는 속성이다.
devDependencies & dependencies 속성
나의 프로젝트에 설치된 npm 패키지들을 확인할 수 있다.
npm install lodash 명령어 실행 시 dependencies으로 설정
npm install -D webpack 명령어 실행 시 devDependencies으로 설정
- 즉, npm install 명령어에서 -D 옵션의 차이
devDependencies & dependencies 차이점
프로젝트에서 application 로직에 직접 포함되는 개발용 라이브러리일 경우
=> dependencies
프로젝트에서 application 로직에 필요하지 않으며 프로젝트 개발에 필요한 라이브러리일 경우
=> devDependencies
참고: devDependencies에 포함된 라이브러리의 경우에는 배포 시에는 포함되지 않는다.
npm version
아래 'lodash'의 npm 패키지 버전은 4.17.21일까?
"dependencies": {
"lodash": "^4.17.21" // 메이저, 마이너, 패치
}
우선 해당 package.json에서 4.17.21은 해당 npm 패키지의 버전을 가르키는 것이 아니라 설치 범위를 가리킨다.
즉, 프로젝트에 설치된 lodash의 버전이 '4.17.21'일 수도 있고, 아닐 수도 있다는 뜻이다.
npm의 version은 MAJOR.Minor.patch로 구성되어 있다.
참고: TypeScript 라이브러리의 경우에는 MAJOR.MAJOR.Minor로 구성되어 있다.
참고
'Frontend' 카테고리의 다른 글
[ React ] Uncaught TypeError: users.map is not a function 오류 해결 방법 (0) | 2024.10.14 |
---|---|
[React] Warning: Encountered two children with the same key 오류 해결 방법 (1) | 2024.10.11 |
알기 쉽게 정리한 JSX란? (1) | 2024.10.08 |
알기 쉽게 정리한 Babel이란? 프론트엔드 개발자를 위한 웹팩 (1) | 2024.10.07 |
Node.js와 NPM이란? 아주 쉽게 정리 (1) | 2024.09.25 |
댓글