NodeJS

JavaScript는 일반적으로 브라우저 환경에서 실행했기 때문에 대부분 프론트엔드단에서만 사용되는것으로 한정되어 있었다. 그래서 상급이상의 개발자가 되기위해서는 서버단을 조작할 수 있는 언어와 관련툴의 사용지식은 필수였고(지금도 레거시한 환경에서 개발된 솔루션들은 든든하게 버티고 있다고 들었다.), 최근 프론트엔드과정 전 듣던 React강좌에서도 NodeJS의 위대함에 대해 설명하며 내가 알고있던 생태계에 대한 이야기를 했다. 그 생태계가 변한건 이제부터 볼 프론트엔드 언어만 가능하다는 한계를 넘어선 NodeJS.

1. Runtime

프로그래밍 언어가 실행되는 환경으로 NodeJS는 JavaScript런타임이다. 과거에는 브라우저에서만 작동하였으나, NodeJS가 나온 이후로는 서버환경도 가능한 다재다능한 언어로 탈바꿈하였다.

2. nvm(Node Version Manager)

일반 설치를 할수도 있으나, 그럴 경우에 환경이 변할때 마다 일일이 삭제하고 설치하고의 생산성을 떨어뜨리는 일이 반복된다. 우분투와 씨름하면서 알게된 version manager. 다른 언어들도 이와 비슷한 패키지들이 있으니 알고있으면 편하다.

3. Ubuntu 설치

$sudo apt-get update
$sudo apt-get install wget

$wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# 설치 후 터미널 재실행

$nvm --version # 버전이 출력이면 성공

# 버전 변경법
$nvm ls

$nvm install xx.xx.xx

$nvm use xx.yy.zz # 전에 설치한 버전이든 새로설치한 버전이든 환경에 맞게 사용

# --------------

# NodeJS설치(--lts 안정화버전으로 지속적인 업데이트를 해준다)
$nvm install --lts

$node -v # 버전 출력이면 성공

# --------------

# npm(Node Package Manager)
$npm init # 정보값 입력 후 package.json 생성

$npm init -y # 정보입력 생략

$npm install # Workspace에 설치

4. package.json 구조

  • 프로젝트 정보: name, version, description
  • main
  • scripts: cli로 사용가능한 명령(npm run script)
  • keywords
  • author
  • dependencies, devDependencies: 개발에 관련된 dependency(저장소를 바라보는 정보)

package.json에 기재된 정보들이나 dependency는 html처럼 단순한 문서. 명세일뿐이다. 명세가 잘못되도 문제가 되지만, 명세만으로 어떤 동작을 하는 건아니다(실제로 프로그램이 동작하는 명령(필요한 코드)을 저장하고 있지 않다.)

참조

Github:NVM Doc
NodeJS
NPM