coding/Node.js

package.json

JIN_Coder 2022. 7. 31. 01:37

package.json

현재 프로젝트에 관한 정보와 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리 하는 파일

배포한 모듈 정보를 담고 있으며, JSON 형식의 파일

 

 

생성방법

npm init // 프로젝트명, 설명 등 작성할 내용이 있을 경우 또는,
npm init -y // 입력할 내용없이 package.json 생성

직접 작성할 수도 있고 npm init 명령을 통해서 자동으로 생성가능 함

 

 

기본 구조

예시 구조(생략된 것들도 있음)

name

프로젝트 이름으로, 가장 중요하다. 중앙 저장소에 배포할 때 version과 함께 필수 항목이다.

 

version

프로젝트 버전을 정의힌다. 3단계 버전을 사용하며, - 로 태그 이름을 적을 수 있다.

 

description

프로젝트 설명으로, 문자열로 기술한다.

npm search로 검색된 리스트에 표시되기 때문에 사람들이 패키지를 찾아내고 이해하는 데 도움이 된다.

 

keywords

프로젝트를 검색할 때 참조되는 키워드이다.

 

author

프로젝트 작성자 정보로, 한 사람만을 지정한다.

 

contributors

프로젝트에 참여한 공헌자 정보로, 여러 사람을 배열로 지정할 수 있다.

 

repository

프로젝트의 소스 코드를 저장한 저장소의 정보이다.

 

scripts

프로젝트에서 자주 실행해야 하는 명령어를 scripts로 작성해두면 npm 명령어로 실행 가능하다.

"scripts": {"start": "node server.js"}

config

소스 코드에서 config 필드에 있는 값을 환경 변수처럼 사용할 수 있다.

"name": "foo",
"config": {
    "port": "8080"
}

dependencies

프로젝트 의존성 관리를 위한 부분이다. 이 프로젝트가 어떤 확장 모듈을 요구하는지 정리할 수 있다.

일반적으로 package.json에서 가장 많은 정보가 입력되는 곳이다.
애플리케이션을 설치할 때 이 내용을 참조하여 필요한 확장 모듈을 자동으로 설치한다.
따라서 개발한 애플리케이션이 특정한 확장 모듈을 사용한다면 여기에 꼭 명시를 해주어야 한다.

또한, npm install 명령은 여기에 포함된 모든 확장 모듈들을 설치하게 되어 있다.

 

devDependencies

개발할 때만 의존하는 확장 모듈을 관리한다.

 

engine

실행 가능한 노드 버전의 범위를 결정한다.

 

dependencies와 devDependencies 속성의 차이

dependencies와 달리 devDependencies의 패키지들은 배포시 굳이 설치가 필요없는,

개발 환경에서만 사용하는 패키지들을 추가하는 곳

 

 

모듈 설치

npm install

프로젝트에 필요한 모듈의 정보는 package.json의 dependencies 안에 들어가 있으므로

dependencies에 명시된 필요한 모듈들을 자동으로 모두 설치해준다.

즉, 새로운 환경에서 프로젝트의 파일을 받아 동일한 환경 설정을 하기 위해서 npm i로 package.json의 dependencies를 통해 필요한 모듈들을 한번에 설치하여 동일한 환경을 조성한다.

 

 

 

package-lock.json

package-lock.json을 사용하는 이유

기존에 사용하는 package.json의 정보가 부족하기 때문

package.json에서 버전을 지정할때는 version range(~0.0.1)의 형태를 사용

 

협업을 하기위해 같은 package.json을 사용해 각자의 컴퓨터에 같은 패키지들을 설치해 같은 개발환경을 구성하지만,

npm install을 진행하더라도 서로 다른 node_modules를 생성하는 경우 몇 가지 이슈가 발생

 

1. npm 버전이 다른 경우

2. 버전을 명시하지 않고 version range를 사용하여, 새로운 버전의 패키지가 배포된 이후 설치를 진행할 경우

3. 내가 사용하는 패키지를 의존하고 있는 패키지가 새로운 버전으로 배포되었을 경우

 

첫 번째의 경우 npm --version으로 버전을 확인한 이후 npm 버전을 일치시키면 예방할 수 있다.

하지만, 개발하는 두 사람의 range-parser이 달라 실행되지 않으면 몇가지 오류가 발생한다.

package-lock.json은 node_modules 구조나 package.json이 수정되고 생성될 때 당시의 의존성에 대한 정확하고

구체적인 정보를 품고 자동으로 생성한다.

 

package-lock.json 이 존재할 때에는 npm install 의 동작방식이 조금 변하는데

package.json 을 사용하여 node_modules를 바로 생성하지않고 package-lock.json 을 사용하여 node-modules 를

생성한다.

package-lock.json 이 있다면 모듈의 버전을 더 명확게 맞추어 설치하게 도와준다.

 

 

 

 

[Node.js] package.json 파일이란?

node 를 사용하면서 수도 없이 많이 봤던 package.json! 하지만 막상 세부적인 속성 값의 의미를 모르고 있는 것 같아 정리해보려고 한다. package.json 파일은 배포한 모듈 정보를 담고자 만들어졌다. pac

velog.io

 

2. [Nodejs] package.json과 package-lock.json은 무엇일까?

Nodejs를 사용할 때 자주 볼 수 있는 파일이 있습니다. package.json과 package-lock.json입니다. 자주 보고, 자주 건드려 보지만 둘의 차이와 사용 목적을 잘 모르는 경우가 있습니다. 이번 포스팅에서는

1000hg.tistory.com

 

'coding > Node.js' 카테고리의 다른 글

모듈(module), require(), IIFE  (0) 2022.08.03
sequelize CRUD 사용법  (0) 2022.08.02
npm jsonwebtoken  (0) 2022.07.29
Express의 미들웨어  (0) 2022.07.23
Node.js, express  (0) 2022.07.22