728x90
개요
- Node.js 프로젝트를 시작할 때 가장 먼저 만드는 파일은 package.json입니다.
- 이 파일은 프로젝트 정보, 서버 의존성 모듈, 라이브러리 환경설정 등을 저장하며, 개발 환경 설정 역할에 대하여 알아봅시다.
Node.js 이란?
- 라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시키고 자바스크립트 런타임 환경을 가진 언어이다.
- 비동기 I/O를 지원
- 단일 스레드 이벤트 루프 기반으로 동작함으로써 요청 처리 기능을 제공
- 데이터를 실시간으로 처리하기 위해 I/O이 빈번하게 발생하는 SPA에 적합하고 CPU 사용률이 높은 애플리케이션에는 권장하지 않는다.
Node.js 최신 버전
- Node.js 커뮤니티에서 1년에 2번(약 6개월 간격으로) 새 버전을 출시한다.
- Node.js 커뮤니티 : https://nodejs.org/en
- 출시 후 6개월 간 Current 상태를 거치고, LTS(Long Term Support)버전으로 된다.
- 즉, 새 버전을 배포 시 마다 이전 Current 버전을 LTS 버전으로 변경, 새 버전을 Current 상태로 배포하는 것.
Node.js — Run JavaScript Everywhere
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
Node.js 최신 버전의 장단점
Node 버전과 npm 버전 사이에는 호환성이 존재하지 않는다.
장점 | 단점 | |
안정성 | LTS(30개월 지원)로 안정성 보장, 2027년 7월 9일까지 안정성 업데이트 제공 | 최신 버전의 Node.js를 사용할 경우, Docker 이미지와 같은 환경에서 버전 불일치로 인한 문제 확인 필요 |
새로운 기능 | 새로운 API 추가 및 성능 향상, 빠른 런타임 제공 | 특정 버전에서 새로운 기능을 추가하거나 deprecated 된 기능이 있을 경우 기존 프로젝트에서 사용 중인 라이브러리들이 작동하지 않을 수 있다. |
호환성 | 기존 라이브러리 및 프레임워크와의 호환성 증가 | 최신 ECMAScript 표준을 지원하지만, 코드가 구버전 Node.js에서 실행되던 방식과 호환되지 않는 경우가 있을 수 있습니다. 이로 인해 기존 코드베이스에서 오류가 발생할 수 있다. |
ECMAScript 지원 | 최신 ECMAScript 표준 지원, 효율적인 자바스크립트 개발 가능 |
패키지 버전 관리 Node.js Version
1. 버전 명칭 (Major.Minor.Patch)
- 주버전(MAJOR) : 18 - 기존과 호환되지않은 기능 추가
- 부버전(MINOR)2 : 2 - 기존과 호환되는 기능 추가
- 수버전(PATCH)0: 0 - 기존과 호환되는 버그 수정
// 특정 버전보다 높거나 낮은 경우 크다, 작다, 크거나 같다, 작거나 같다 표기
>1.2.3
>=1.2.3
<1.2.3
<=1.2.3
2. 버전 업데이트 호환 범위
- 틸트(~): 마이너 버전에소 패치 버전 변경 → 마이너 버전이 없는 경우(~0) 1.0.0 까지 포함
- 캐럿(^): 정식버전에서 마이너와 패치 버전 변경 → 정식버전 미만까지는 패치만 갱신(^0) 0.1.0까지 포함 → 하위호환성을 따름
// 1.2.3보다 크거나 같고, 2.0.0보다 작은 범위내에서 업데이트
^1.2.3
// 1.2.3을 포함해서 같거나 크고, 1.3.0보다 작은 범위내에서 업데이트
~1.2.3
Looking for latest release of a version branch?
버전 지점의 최신 릴리스를 찾고 계십니까?
Full details regarding Node.js release schedule are available
{
"v0.8": {
"start": "2012-06-25",
"end": "2014-07-31"
},
"v0.10": {
"start": "2013-03-11",
"end": "2016-10-31"
},
"v0.12": {
"start": "2015-02-06",
"end": "2016-12-31"
},
"v4": {
"start": "2015-09-08",
"lts": "2015-10-12",
"maintenance": "2017-04-01",
"end": "2018-04-30",
"codename": "Argon"
},
"v5": {
"start": "2015-10-29",
"maintenance": "2016-04-30",
"end": "2016-06-30"
},
"v6": {
"start": "2016-04-26",
"lts": "2016-10-18",
"maintenance": "2018-04-30",
"end": "2019-04-30",
"codename": "Boron"
},
"v7": {
"start": "2016-10-25",
"maintenance": "2017-04-30",
"end": "2017-06-30"
},
"v8": {
"start": "2017-05-30",
"lts": "2017-10-31",
"maintenance": "2019-01-01",
"end": "2019-12-31",
"codename": "Carbon"
},
"v9": {
"start": "2017-10-01",
"maintenance": "2018-04-01",
"end": "2018-06-30"
},
"v10": {
"start": "2018-04-24",
"lts": "2018-10-30",
"maintenance": "2020-05-19",
"end": "2021-04-30",
"codename": "Dubnium"
},
"v11": {
"start": "2018-10-23",
"maintenance": "2019-04-22",
"end": "2019-06-01"
},
"v12": {
"start": "2019-04-23",
"lts": "2019-10-21",
"maintenance": "2020-11-30",
"end": "2022-04-30",
"codename": "Erbium"
},
"v13": {
"start": "2019-10-22",
"maintenance": "2020-04-01",
"end": "2020-06-01"
},
"v14": {
"start": "2020-04-21",
"lts": "2020-10-27",
"maintenance": "2021-10-19",
"end": "2023-04-30",
"codename": "Fermium"
},
"v15": {
"start": "2020-10-20",
"maintenance": "2021-04-01",
"end": "2021-06-01"
},
"v16": {
"start": "2021-04-20",
"lts": "2021-10-26",
"maintenance": "2022-10-18",
"end": "2023-09-11",
"codename": "Gallium"
},
"v17": {
"start": "2021-10-19",
"maintenance": "2022-04-01",
"end": "2022-06-01"
},
"v18": {
"start": "2022-04-19",
"lts": "2022-10-25",
"maintenance": "2023-10-18",
"end": "2025-04-30",
"codename": "Hydrogen"
},
"v19": {
"start": "2022-10-18",
"maintenance": "2023-04-01",
"end": "2023-06-01"
},
"v20": {
"start": "2023-04-18",
"lts": "2023-10-24",
"maintenance": "2024-10-22",
"end": "2026-04-30",
"codename": "Iron"
},
"v21": {
"start": "2023-10-17",
"maintenance": "2024-04-01",
"end": "2024-06-01"
},
"v22": {
"start": "2024-04-23",
"lts": "2024-10-29",
"maintenance": "2025-10-21",
"end": "2027-04-30",
"codename": ""
},
"v23": {
"start": "2024-10-15",
"maintenance": "2025-04-01",
"end": "2025-06-01"
},
"v24": {
"start": "2025-04-22",
"lts": "2025-10-28",
"maintenance": "2026-10-20",
"end": "2028-04-30",
"codename": ""
}
package.json 이란?
- Node.js 환경을 설정하려면 package.json 파일을 사용하여 프로젝트의 의존성, 스크립트 및 메타데이터를 관리하는 파일이다.
package.json 생성하기
// Node.js 프로젝트에서 package.json 파일을 생성하려면, 터미널에서 다음 명령어를 실행
$ npm init
package.json 기본 구조
{
"name": "my-project", // 프로젝트 이름
"version": "1.0.0", // 버전
"description": "", // 프로젝트 설명
"main": "index.js", // 진입점 파일
"scripts": { // npm 스크립트
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [], // 프로젝트와 관련된 키워드
"dependencies": {
"react": "^17.0.2",
"react-dom": "^17.0.2"
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^2.0.19"
},
"author": "Your Name", // 작성자
"license": "MIT" // 라이센스
}
dependencies, devDependencies (패키지 유형)
Node.js 프로젝트에서는 다양한 패키지를 dependencies와 devDependencies에 구분하여 관리한다.
- dependencies : 앱에 종속된 가장 일반적인 종속성 패키지
- devDependencies : 런타임에서는 필요하지 않은 빌드타임 & 개발에만 필요한 패키지
- peerDependencies : 패키지에서 직접 require(import) 하지는 않더라도 호환성이 필요한 경우 사용하는 패키지
// 실제 애플리케이션에서 필요한 라이브러리를 설치
$ npm install <package-name>
// 개발 환경에서만 필요한 라이브러리를 설치
$ npm install <package-name> --save-dev
scripts (노드 명령어)
- package.json의 scripts 섹션은 자주 사용하는 명령어를 정의할 수 있는 곳입니다. 예를 들어, start와 dev 스크립트를 설정한다.
engines
- Node.js 버전 요구 사항을 설정한다.
"engines": {
"node": ">=14.0.0"
}
repository
- 프로젝트의 Git 저장소 정보 추가
"repository": {
"type": "git",
"url": "git+https://github.com/username/my-node-app.git"
}
728x90