<Node.js 란?>
자바스크립트 런타임(Node.js)은 확장 가능한 네트워크 애플리케이션을 구축하기 위해 설계된 환경입니다. Node.js를 사용하면 자바스크립트를 풀스택으로 사용할 수 있으며, 확장성이 뛰어나고, 비동기 처리(Non-blocking)와 방대한 에코시스템(커뮤니티)을 제공합니다. **런타임 (runtime)** 이란 프로드래밍 언어가 구동되는 환경을 말합니다.
<Node.js 설치하기>
컴퓨터가 브라우저 없이 Javascript 코드를 읽을 수 있게 Node.js를 설치해 주겠습니다.
Node.js 웹사이트로로 이동하여 안전된 버전 (보통 숫자가 더 낮은 버전 / LTS 버전) 다운로드 및 설치합니다.
설치 완료 후에 Node 실행하여 node --version으로 어떤 버전에 있는지 확인 가능합니다.
Node 환경에 진입할 때에는 $node으로 가능하고 .exit으로 node 환경에서 나옵니다.
<Node.js REPL은 뭔가?>
REPL은 Read-Eval-Print-Loop의 약어로 사용자가 특정 코드를 입력하면 그 코드를 평가하고 코드의 실행결과를 출력해 주는 것을 반복해 주는 환경을 말합니다. REPL 환경에서 자바스크립트 코드를 즉석에서 바로 실행해 결과를 확인해 볼 때 주로 사용합니다.
<Node Package Manager (npm) 이란?>
오픈 소스 Node.js 프로젝트 게시를 위한 온라인 리포지토리(저장소)입니다. 패키지 설치, 버전 관리 및 종속성 관리를 지원하는 해당 저장소와 상호 작용하기 위한 명령줄 유틸리티입니다.
Visual Studio Code 터미널에 들어가 npm init -y 하면 package.json 생성하게 됩니다. 다음 필요한 패키지를 설치하려면 npm install <패키지명> 명령어를 사용합니다. 예를 들어 axios 패키지 설치 및 기능 사용하고 싶으면 npm install axios 하면 됩니다. 패키지 설치 할 경우 Node_modules 폴더가 생기게 됩니다. node_modules 디렉터리에는 package.json에 있는 모듈뿐만 아니라, package.json에 있는 모듈이 의존하고 있는 모듈 전부를 포함하고 있습니다.
<Package-lock.json에 대해>
package-lock.json은 의존성 트리(패키지 종속성 구조)에 대한 정보를 기록하는 파일로, 설치된 시점의 정확한 상태를 유지합니다.
Package-lock.json 파일을 사용하는 이유:
- 이 파일은 소스 리포지토리에 커밋하기 위한 것이며 다양한 용도로 사용됩니다.
- 팀원, 배포 및 지속적 통합이 정확히 동일한 종속성을 설치하도록 보장하는 종속성 트리의 단일 표현을 설명합니다.
- 사용자가 디렉터리 자체를 커밋하지 않고도 node_modules의 이전 상태로 "시간 여행"할 수 있는 기능을 제공합니다.
- 버전이 달라서 호환이 안된다면 에러가 나게 되고 다른 모듈과 버전 충돌이 일어날 수 있어 package-lock.json을 사용하여 문제 해결 할 수 있습니다.
버전 문제나 npm 설치하면 취약점들이 발견되면 <npm audit> 사용하면 됩니다.
audit 명령은 프로젝트에 구성된 종속성에 대한 설명을 기본 레지스트리에 제출하고 알려진 취약성에 대한 보고서를 요청합니다. fix 인수가 제공되면 수정 사항이 패키지 트리에 적용됩니다.
npm audit fix --force 명령어를 터미널에 기입하면 버전의 취약점들을 고칩니다.
<npm install nodemon>
Nodemon은 npm i -g nodemon으로 설치가 가능합니다.
nodemon은 디렉터리의 파일 변경이 감지되면 노드 응용 프로그램을 자동으로 다시 시작하여 Node.js 기반 응용 프로그램을 개발하는 데 도움이 되는 도구입니다. (변경 시 node을 반복적으로 끄고 다시 시작하는 일을 방지)
nodemon을 사용하려면 스크립트를 실행할 때 명령줄에서 node라는 단어를 바꾸면 됩니다.
nodemon 적용하려면 터미널에서 npm run dev 실행하면 됩니다.
노드 패키지들의 버전은 세 자리로 되어있고 상단에서 알아본것과 같이 버전이 다르면 문제가 생길 수 있어 버전 숫자의 의미에 대해 알아보겠습니다. <Semantic Versioning>
버전 번호 MAJOR.MINOR.PATCH가 주어지면 다음을 증가시킵니다.
1. 호환되지 않는 API 변경 시 MAJOR 버전
2. 이전 버전과 호환되는 방식으로 기능을 추가하는 경우의 MINOR 버전
3. 이전 버전과 호환되는 버그 수정 시 PATCH 버전
틸드 (~)
patch 버전까지만 설치 또는 업데이트합니다.
틸드는 현재 지정한 버전의 마지막 자리 내의 범위에서만 자동으로 업데이트합니다.
~0.0.1 >=0.0.1 <0.1.0
~0.1.1 >=0.1.1 <0.2.0
~0.1 >=0.1.0 <0.2.0
~0 >=0.0 <1.0
버전을 명시했을 때 위와 같은 범위 내에서 자동으로 업데이트합니다.
캐럿
minor 버전까지만 설치 또는 업데이트합니다.
캐럿은 Node.js 모듈이 Sematic Versioning의 규약을 따른다는 것을 신뢰한다는 가정하에서 동작하며 그러기에 MINOR나 PATCH버전은 하위 호환성이 보장되므로 그 내에서는 자동으로 업데이트합니다.
^1.0.5 >=1.0.5 <2.0
^1.0 >=1.0.0 <2.0
^1 >=1.0.0 <2.0
* 버전이 1.0.0 미만인 경우에는 예외사항.
^0.1.4 >=0.1.4 <0.2.0
^0.1 >=0.1.0 <0.2.0
^0.0.1 ==0.0.1
소프트웨어 1.0 버전 전에는 API 변경이 계속 일어납니다. 그래서 0.3을 쓰다가 0.4를 사용하면 API가 호환이 안될 수 있습니다.
'웹 개발 (Frontend Developer) > Node.js' 카테고리의 다른 글
Node.js 모듈 시스템에 대해 (0) | 2024.09.06 |
---|