구글 V8 자바스크립트 엔진으로 확장성 있는 네트워크 애플리케이션 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 JavaScript를 사용한다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하고, 이를 통해 웹 서버의 동작에 있어 더 많은 통제 또한 가능하다.
*단일스레드 이벤트 루프 기반 비동기방식(Single Thread Event Loop Non-Blocking I/O)
NodeJS에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며 설치/관리를 수행할 수 있는 CLI를 제공한다. 또한 자바스크립트 라이브러리를 설치하고 관리하는 패키지 매니저이기도 하다.이때 이 패키지들이 서로 의존되어 있어서 하나의 문제가 발생하면 다른 것들까지 영향을 받을 수 있는데, 이를 관리하기 위해 package.json 파일로 프로젝트의 정보와 패키지들의 의존성을 관리한다.
프로젝트의 정보를 정의하고, 의존하는 패키지 버전 정보를 명시하는 파일로 일반적으로 루트 디렉토리에 위치한다. 크게 프로젝트 정보와 패키지 정보로 나누어져있다.
프로젝트 정보 - name, version 영역
package.json 파일은 반드시 name과 version 항목을 포함해야함
name: 소문자 한 단어. 하이픈( - )과 언더스코어( _ )가 포함될 수 있음
version: x.x.x 형식을 따라야 하며, 작성 규칙을 시맨틱 버저닝
이라고 함
패키지 정보 - dependencies 또는 devDependencies 영역