package.json
Node.js환경으로 자바스크립트 프로그래밍을 할 때,
개발 프로젝트의 메타적인 정보가 저장되는 파일이다.
*이름, 사용된 패키지 버전정보 등
어디에 쓰이는가?
파악:
package.json의 정보를 살펴봄으로써
프로젝트사용된 기술스택의 종류와 버전을 알 수 있다.
관리:
또 작성되어 있는 값들은 터미널의 여러 명령어에 연동되므로
패키지설치 및 관리, 테스트 케이스 실행 등 전체 프로젝트를 손쉽게 관리하는 데에 쓰인다.
package.json 생성하기
보통은 개발사작과정에서 다음 명령어를 터미널에 입력하여
프로젝트 초기화를 진행할 때 자동으로 생성된다.
npm init
생성된 package.json
{
"name": "test", : 패키지를 npm에 퍼블리싱할 이름
"version": "1.0.0", 이 패키지의 버전
"description": "", 패키지에 대한 설명
"main": "index.js", 패키지 프로그램의 Entry(최초 실행)파일
"scripts": { 터미널에 run 명령어를 통해 실행할 코드들
"test": "echo \"Error: no test specified\" && exit 1"
npm run test를 입력하면 오른쪽에 값에 쓰인 명령어들이 실행된다.
},
"author": "", 작성자
"license": "ISC" 라이센스
}
* 설명은 제가 직접 써넣었습니다.
또는 직접 프로젝트의 루트 폴더에
package.json라는 이름으로 새로운 파일을 만들어도 된다.
dependencies: 의존성
package.json의 내부에 dependencies(의존성) 값은
개발에 사용되는 react, typescript 아같은 패키지의 버전 관리에 이용된다.
프로젝트를 갓 초기화한 경우에는 저 항목이 없다.
하지만 npm i 혹은 npm install로 개발을 위한 여러 가지 패키지를 설치하면
설치된 패키지의 버전을 표시하는 dependencies 값이 생성된다.
devDependencies를 추가하는 명령어
--save-dev
npm i typescript --save-dev
dependencies를 추가하는 명령어
npm i typescript
여러 가지 패키지를 설치한 경우 볼 수 있는 모습.
"devDependencies": {
"@babel/cli": "^7.21.0",
"@babel/core": "^7.21.0",
"@babel/node": "^7.20.7",
"@babel/preset-env": "^7.20.2",
"express": "^4.18.2",
"nodemon": "^2.0.20",
"pug": "^3.0.2",
"typescript": "^4.9.5"
},
"dependencies": {
"@types/express": "^4.17.17",
"@types/socket.io": "^3.0.2",
"@types/ws": "^8.5.4"
}
무엇을 의미하는가?
dependencies: 실행에 필요한 패키지이름과 버전,
devDependencies: 개발 및 관리에 필요한 패키지이름 및 버전.
*사실 혼자 개발을 할 경우엔 위 두 개의 값에 대한 특별한 구분이 필요 없다.
그래서 버전관리는 어떻게하는가?
터미널의 npm install
명령어는 dependencies 및 devDependencies 값들과 연동되어 있다.
해당 명령어를 터미널에 입력하면
dependencies, devDependencies의 값에 맞는 버전으로
각 패키지들이 전부 설치된다.
사전에 원하는 버전을 입력해 주면 된다.
왜 필요한가?
기술이 계속 변화하기 때문이다.
npm i typescript
패키지를 설치할 때 위와 같이 별다른 버전정보 없이 패키지를 설치하면
항상 최신버전의 패키지가 설치된다.
완전히 동일한 코드를 가진 프로그램이라 하더라도
설치된 구성 패키지들의 버전이 다르다면,
동작이 상이하거나 아예 실행이 되지 않을 수도 있다.
따라서 협업을 할 때, npm i "이름"으로 패키지를 설치하지 말고
dependencies 값들을 공유하여 npm install 명령어를 사용하여 한번에 설치해야 한다.
다른 사람이 작성한 코드로 공부를 할 때에도
내 코드가 작동하지 않는다면, 오타문제가 아니라 패키지 버전 문제일 수 있다
가능하면 사전에 dependencies 값을 살펴보고 패키지를 설치하면 좋다.
읽어주셔서 감사합니다.
오류나 오탈자를 발견하신다면 댓글로 지적해 주세요.
'it공부 (개념) > javascript' 카테고리의 다른 글
자바스크립트와 파이썬의 for문은 다르다. //for in, for of, for in keys().. (0) | 2023.03.30 |
---|---|
if, while 조건문을 사용할 때 false로 평가되는 값들 : falsy 값 정리 (0) | 2023.03.29 |
자바스크립트에서 랜덤 정수 출력하기 (0) | 2023.03.06 |
filter(필터): 배열의 성분이 불편해? / 자바스크립트 메서드 (0) | 2023.02.21 |
padStart와 padEnd: 자바스크립트 문자열에 패딩을 입혀보자! (0) | 2023.02.20 |