728x90
Node.js
- Node.js는 자바스크립트 엔진을 브라우저 환경 외부에서도 사용할 수 있도록 만든 자바스크립트 런타임 환경입니다.
- 비동기 I/O를 지원하며, 단일 스레드 이벤트 루프 기반으로 동작하여 비동기 요청 처리를 효율적으로 합니다.
- **SPA(Single Page Application)**와 같이 I/O가 빈번한 애플리케이션에 적합하며, CPU 사용률이 높은 애플리케이션에는 권장되지 않습니다.
npm (Node Package Manager)
npm은 Node.js 패키지 매니저로, 자바스크립트 라이브러리나 도구들을 설치하고 관리하는 데 사용됩니다.
- 기능:
- 패키지 설치: npm install <패키지명>
- 프로젝트의 의존성 관리
- 패키지 업데이트: npm update
- 패키지 삭제: npm uninstall <패키지명>
- 프로젝트 초기화: npm init
npm install react # react 패키지를 설치
npm install express # express 패키지를 설치
npx (Node Package Execute)
npx는 npm 패키지를 실행하는 데 사용됩니다. npx를 사용하면 설치된 패키지를 전역적으로 또는 로컬에서 실행할 수 있습니다. 특히 일회성 실행이나 패키지의 특정 버전 실행에 유용합니다.
- 기능:
- 패키지 실행: npx는 특정 패키지를 설치하지 않고도 즉시 실행할 수 있게 해줍니다.
- 패키지의 최신 버전 실행: 로컬 또는 전역에 패키지를 설치하지 않고 최신 버전을 바로 실행합니다.
- 일회성 실행: 실행하고 나서 다시 사용하지 않을 패키지를 설치할 때 유용합니다.
npx create-react-app my-app # create-react-app을 설치하지 않고 바로 실행하여 새 React 앱 생성
npx cowsay "Hello, world!" # cowsay 패키지를 바로 실행하여 메시지를 출력
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": ""
}
728x90
'Backend > Server' 카테고리의 다른 글
[ERROR] npm : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Program Files\nodejs\npm.ps1 파일을 로드할 수 없습니다. (0) | 2024.08.13 |
---|---|
Node.js 프로젝트 시작하기 | package.json (0) | 2024.05.03 |
Express 서버, Proxy 설정 가이드 | http-proxy-middleware (0) | 2024.01.24 |
npm 패키지 관리 | npm link, npm pack and npm publish (0) | 2024.01.12 |
Express 서버, CORS 설정 가이드 | cors (0) | 2024.01.11 |