logo
Posts
package.json

package.json

package.json 은 Node.js 프로젝트에서 가장 중요한 파일 중 하나라고 할 수 있습니다. 이 파일은 프로젝트의 메타데이터, 의존성 관리, 스크립트 실행 등 여러 가지 중요한 정보를 담고 있어 프로젝트를 효율적으로 관리하고 협업하는 데 필수적입니다. 이번에는 package.json 파일의 구조와 주요 필드에 대해 상세히 살펴보겠습니다.

소개

package.json 파일은 Node.js 프로젝트의 루트 디렉토리에 위치한 JSON 파일입니다. package.json 파일은 Node.js 프로젝트의 메타데이터 파일로, 프로젝트 이름, 버전, 의존성, 스크립트 등을 정의합니다. 이 파일은 프로젝트를 초기화할 때 자동으로 생성되며, 프로젝트 관리, 배포, 빌드 등에 중요한 역할을 합니다.

주요 역할을 더욱 상세히 알아보면 다음과 같습니다.

  • 프로젝트 메타데이터 관리: 프로젝트 이름, 버전, 저작자 정보 등을 담습니다.
  • 의존성 관리: 프로젝트에서 사용하는 패키지(라이브러리)를 명시하고 관리합니다.
  • 스크립트 정의: 자주 사용하는 명령어를 정의해 쉽게 실행할 수 있습니다.
  • 프로젝트 배포 정보: 패키지를 npm에 배포할 때 필요한 정보를 포함합니다.

구조

package.json 파일은 다음과 같은 구조를 가지고 있습니다.

{
	"name": "project-name",
	"version": "1.0.0",
	"description": "Project description",
	"main": "index.js",
	"scripts": {
		"start": "node index.js"
	},
	"author": "Author Name",
	"license": "MIT",
	"dependencies": {
		"package-name": "1.0.0"
	},
	"devDependencies": {
		"package-name": "1.0.0"
	}
}

이제 각 필드가 어떤 역할을 하는지 상세히 알아보겠습니다.

주요 필드

name

프로젝트의 이름을 나타냅니다.
이 이름은 npm 레지스트리에서 고유해야 하며, 소문자만 사용해야 하고, 특수 문자는 허용되지 않습니다. 최대 길이는 214자입니다.

{
	"name": "project-name"
}

version

프로젝트의 버전을 나타냅니다.
Node.js는 Semantic Versioning (opens in a new tab)을 따르며, 버전은 major.minor.patch 형식을 사용합니다.

  • major: 하위 호환되지 않는 큰 변경 사항 (예: 1.0.0 → 2.0.0)
  • minor: 하위 호환되는 기능 추가 (예: 1.0.0 → 1.1.0)
  • patch: 하위 호환되는 버그 수정 (예: 1.0.0 → 1.0.1)
{
	"version": "1.0.0"
}

description

프로젝트의 간단한 설명을 나타냅니다.
프로젝트의 목적이나 주요 기능을 기술할 수 있습니다. 일반적으로, npm 레지스트리에서 검색될 때 이 설명이 표시됩니다.

{
	"description": "Project description"
}

main

프로젝트의 진입점(entry point) 파일을 나타냅니다.
이 파일은 프로젝트를 실행할 때 가장 먼저 실행되는 파일입니다. Node.js에서 패키지를 불러올 때 이 파일을 참조합니다. 기본값은 index.js이며, 다른 파일을 사용하고자 한다면 이 필드에서 설정할 수 있습니다.

{
	"main": "index.js"
}

scripts

프로젝트에서 자주 실행하는 스크립트를 정의합니다.
예를 들어, start, test 와 같은 스크립트를 정의한다고 가정해 봅시다.

{
	"scripts": {
		"start": "node index.js",
		"test": "jest"
	}
}

CLI 에서 사용 방법은 다음과 같습니다.

script 키 값을 사용하여 실행할 수 있습니다. run 명령어로 호출 가능합니다.

npm run ${script-key}

위에서 선언된 start 스크립트를 기준으로 실행해 보겠습니다.

npm start 또는 npm run test 명령어로 실행할 수 있습니다.

  • start: npm start 로 실행하면 프로젝트를 실행할 수 있습니다.
  • test: npm run test 로 실행하면 테스트를 실행할 수 있습니다.

author

프로젝트의 저작자에 대한 정보를 나타냅니다.
현재 항목에서는 저작자의 이름 뿐 아니라, 이메일, 웹사이트 등의 정보도 포함할 수 있습니다.

{
	"author": "Author Name"
}

license

프로젝트에 적용되는 라이선스를 지정합니다.
기본값은 ISC 라이선스이며, MIT, Apache-2.0과 같은 다른 라이선스를 선택할 수 있습니다.

{
	"license": "MIT"
}

dependencies

프로젝트에서 사용하는 패키지(라이브러리)를 명시하고 관리합니다.
npm으로 패키지를 설치할 때 이 목록이 업데이트되며, 설치된 패키지는 node_modules 디렉토리에 저장됩니다. dependencies 는 애플리케이션 실행에 필요한 패키지를 지정합니다.

  • dependencies: 애플리케이션 실행 시 반드시 필요한 패키지 목록입니다. 배포된 애플리케이션이 실행될 때 함께 설치됩니다.
  • devDependencies: 개발 중에만 필요한 패키지 목록입니다. 테스트 도구나 빌드 도구가 여기에 포함됩니다. 프로덕션 환경에서는 설치되지 않습니다.
{
	"dependencies": {
		"package-name": "^1.0.0"
	}
}

버전 앞의 ^SemVer(Semantic Versioning)을 따르며, ^는 호환되는 최신 버전을 설치하라는 의미입니다.

devDependencies

개발 환경에서만 필요한 패키지(라이브러리)를 명시하고 관리합니다.
테스트 도구, 빌드 도구 등 개발에 필요한 패키지를 여기에 포함합니다.

{
	"devDependencies": {
		"package-name": "^1.0.0"
	}
}

결론

package.json은 Node.js 프로젝트의 핵심 파일로, 의존성 관리, 스크립트 실행, 메타데이터 설정 등을 담당합니다. 이를 통해 프로젝트를 쉽게 관리하고 협업할 수 있으며, 프로젝트의 규모가 커질수록 package.json의 역할은 더욱 중요해집니다.

따라서 이 파일의 각 필드를 잘 이해하고 적절히 활용하는 것이, 프로젝트 관리와 배포에 큰 도움이 됩니다.

💡

프로젝트의 규모에 맞춰 package.json을 적절히 관리해 보세요!

package.json 파일에 대해 알아보았습니다.
다음 글에서는 npm 을 활용하여 프로젝트를 시작하는 방법에 대해 알아보겠습니다.