기술 블로그를 정리하면서, 초심자의 마음으로 Node.js 설치 및 기본 세팅부터 다시 개념을 정리하고
복습해보고자 한다!
나는 맥북을 사용해서 개발을 하므로 OS 환경 기준임을 미리 말해둔다.
javascript(이하 자바스크립트)를 배우고자 한다. 그런데 무작정 에디터를 설치하고 코드를 작성하면 될까? 자바스크립트 뿐 아니라 사용하고자 하는 언어를 위한 환경을 셋팅해야 할 것이다.
여기서 잠깐 런타임이란 용어에 대해서 이해하고 넘어가면 좋을듯하다.
런타임이란 프로그래밍 언어가 구동되는 환경이다. 즉 자바스크립트를 적고 코드가 실행이 되는 곳이 런타임인 것이다.
그렇다면 자바스크립트를 사용하기 위해서는 이 코드가 실행되기위한 런타임들을 알아보고 필요하다면 추가로 설치해야 하는 것이다.
자바스크립트의 런타임은 브라우저가 대표적이다. 우리가 흔히 쓰는 웹사이트 말이다.
따라서 크롬을 키고 개발자도구에 들어가면 기본적인 코드는 콘솔창에서 입력하고 실행해 볼 수 있는 것이다. 기존에는 브라우저가 자바스크립트의 유일한 런타임이었다. 따라서 자바스크립트로는 웹페이지만 만들 수 있었다.
하지만 node.js가 새로운 자바스크립트의 런타임으로 등장하면서, 웹브라우저뿐 아니라 다른 프로그램도 만들 수 있게 된 것이다.
node.js를 설치하는 방법은 다양하다. 그러나 NVM을 이용한 설치가 가장 효율적이다.
그 이유는 node.js도 하나의 프로그램이므로, 계속해서 버전이 향상되는데, 그 버전들에 맞춰서
일일이 설치하고 다시 지우고 하는 번거로운 과정이 필요하다.
이때 NVM 즉, node version manager를 사용한다면 다양한 node version을 손쉽게 옮겨다닐 수 있다. nvm 또한 하나의 프로그램으로 설치가 필요하다.
sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
nvm ls
그런데 나는 -bash: nvm: command not found
해당 에러가 떠서 당황...
위의 에러가 뜬다면
1. 터미널에 해당 명령어를 입력하여 vi에디터를 켜준다. vi ~/.bash_profile
2. 아래의 코드가 있는지를 확인해준다. 없다면 추가!
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.bash_profile
nvm ls
-> system
node -> stable (-> N/A) (default)
iojs -> N/A (default)
nvm install 10.13.0
해당 명령어를 터미널 창에 입력하기만 하면 된다.nvm use (사용하고 싶은 Node version : use 명령어 전에 해당 node version이 설치되어있어야 한다.)
ex) nvm use 12.13.0
node -v
node.js를 설치하고 난 이후에, 프로그램을 만들면서 다양한 추가 기능들(모듈)을 설치하고 삭제하게 될 것이다.
기본적으로 혼자가 아닌 팀으로 프로젝트를 진행하는 경우가 많으므로 개인이 코드를 작성한 이후에, 이 코드 실행을 위해 어떠한 모듈이 필요한지 등등의 정보들을 전달해주어야 한다.
일일이 전달해야겠지만 node.js를 설치하면 설치되는 package.json 파일을 통해서 이 모든 것들을 확인 가능하다.
만약에 내가 코드를 작성하고 여러 모듈을 작성한 다음에, 팀원에게 해당 코드를 넘겨 준다면?
다운받은 모듈들도 다같이 넘어갈까?
이것 또한 아니다. package.json에 정보만 기재된 채로 넘어가게 된다.(모듈들까지 다같이 넘어간다면
전달될 때 시간이 엄청 오래 걸릴 것이다.)
코드를 전달받은 팀원은 package.json을 확인한 후, npm install 만 터미널에 입력해서 실행해준다면, 필요한 모듈들이 한꺼번에 설치된다.
node package manager로 말그대로 node의 다양한 패키지와 모듈들을 관리하는 일종의 앱스토어이다.
따라서 (앞으로 자주 사용하게 될것이다.) npm install ~~ 로 필요한 모듈을 설치 가능하고, npm start로 서버 실행까지 가능하다.
처음 프로젝트를 시작할 때, npm init 명령어를 통해 시작할 수 있다. node상의 package를 바탕으로 프로젝트를 시작하는 것이다.
npm init을 하면 package 정보가 담긴, package.json이 만들어진다.
"dependencies": {
"react": "^16.8.6",
}
"devDependencies": {
"jest": "^2.3.0",
"eslint" : "^2.0.0"
}
"scripts": {
"start": "node app.js",
"test": "node test.js",
}