Node.js 설치법 (Mac 기준) + npm, package.json 이란?

Node.js 설치법 (Mac 기준) + npm, package.json 이란?

Node.js 란?

Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다.

기능 크게 두가지가 있다. 노드로 서버를 실행할 수 있다. 자바스크립트 프로그램을 실행하는 런타임이다.

노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있지만, 노드는 서버 애플리케이션을 실행하는 데 제일 많이 사용된다.

서버로써 기능을 한다는 건 무엇인가? 예를 들어 보자. 애플 앱스토어에서 원하는 앱을 고른 후 설치 버튼을 누르면 내려받기가 시작된다. 앱 설치 파일은 이미 어딘가에 저장되어 있으므로 우리가 그곳에서 데이터를 받아와 모바일 기기에 설치할 수 있는 것이다. 그 어딘가가 애플의 '서버' 이다. 앱스토어는 클라이언트 역할 을 하는 것이다.

런타임이란 무엇인가? 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 따라서 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있다. 기존에는 자바스크립트 프로그램을 웹 브라우저 위에서만 실행할 수 있었다. (브라우저는 자바스크립트 런타임을 내장하고 있으므로 자바스크립트 코드 실행 가능함) 그 후, 구글이 V8 엔진을 사용하여 크롬을 출시하였고, 이 V8 엔진 기반의 노드 프로젝트가 시작된 것이다.

노드의 특징은 크게 두가지가 있다. 논 블로킹 방식이다. (비동기와 비슷한 개념) 싱글 스레드이다. 하지만 엄밀히 말하면 싱글 스레드로 동작하는 건 아니다. 노드를 실행하면 먼저 프로세스가 하나 생성된다. 그리고 그 프로세스에서 스레드를 여러 개 생성하는데 우리가 직접 제어할 수 있는 스레드는 하나뿐이여서 '싱글 스레드'로 여겨지는 것이다.

서버로서의 노드 노드를 보통 어디에 사용하는가? 개수는 많지만 크기는 작은 데이터를 실시간으로 주고 받는데 적합하다. 실시간 채팅 애플리케이션, 주식 차트, JSON 데이터를 제공하는 API 서버 등이 노드를 많이 사용한다. 노드도 현재는 '멀티 스레드' 작업을 할 수 있게 되었지만, 멀티 스레드 프로그래밍을 하더라도 C, C++, Rust, Go와 같은 언어에 비해 속도가 많이 느리다. 싱글 스레드 방식으로 서버를 운영할 때는 하나뿐인 스레드가 에러로 인해 멈추지 않도록 잘 관리해야 한다. 에러를 제대로 처리하지 못하면 하나뿐인 스레드가 죽어버려서 서버 전체가 멈추게 된다. 노드에는 웹 서버가 내장되어 있다. 노드 외의 서버를 개발하다 보면 아파치, nginx, IIS 처럼 별도의 웹 서버를 설치해야 하는 경우가 많다 . 심지어 톰캣 같은 웹 어플리케이션 서버(WAS)를 추가로 설치하는 경우도 있다. -> 이 경우에는 프로그래밍 외에도 웹 서버와 WAS 사용법을 익혀야 한다. 하지만 노드는 내장된 웹 서버를 사용하면 되므로 편리하다. ( 하지만 나중에 서버 규모가 커지면 결국 nginx 등의 웹 서버를 노드 서버와 연결해야만 한다. )

서버 외의 노드 (런타임으로의 기능) 웹, 모바일 애플리케이션 개발에도 사용된다. 노드 기반으로 돌아가는 대표적인 웹 프레임워크로는 앵귤러, 리액트, 뷰 등이 있다. 모바일 개발 도구로는 리액트 네이티브가 있다. 데스크톱 개발 도구로는 일렉트론이 대표적이다. (Atom, Slack, Discord, VS Code 가 일렉트론으로 만들어진 프로그램이다.)

Node.js 설치법

계속을 누르다 보면 설치 완료 화면이 나옵니다.

제대로 설치했는지 확인하기 위해 terminal 창 (window의 경우 cmd) 에서 Node.js 의 버전과 npm 의 버전을 검색해 봅니다.

아래와 같이 버전 정보가 제대로 뜨면, 설치가 제대로 된 것 입니다.

npm 이란?

Node Package Manager의 약어로, 이름 그대로 노드 패키지 매니저 입니다.

세상에는 무수히 많은 자바스크립트 프로그래머가 있습니다. 그들은 우리와 같은 길을 먼저 걸으면서 많은 유용한 코드를 미리 작성해놓았습니다. 게다가 그 코드를 다른 사람이 볼 수 있게 공개해놓았습니다. 그런 코드들이 공개되어 있는 서버가 npm 입니다. (git 같은 존재이죠)

입니다. (git 같은 존재이죠) 대부분의 자바스크립트 프로그램은 '패키지'라는 이름으로 npm에 등록되어 있어서 특정 기능을 하는 패키지가 필요하다면 npm에서 찾아 설치하는 것입니다.

package.json 이란?

서비스에 필요한 패키지를 npm에서 하나씩 추가하다 보면 패키지 수가 100개는 훌쩍 넘어버리게 됩니다. 그리고 사용할 패키지는 저마다 고유한 버전이 있으므로 어딘가에 기록해두어야 합니다. 설치한 패키지들의 버전을 관리하는 파일이 package.json 입니다.

따라서 노드 프로젝트를 시작하기 전에는 폴더 내부에 무조건 package.json 만들고 시작해야 합니다.

npm init 명령어로 package.json 생성이 가능합니다.

from http://rimkongs.tistory.com/281 by ccl(A) rewrite - 2021-01-06 02:00:45