단순 설치를 넘어: Node.js와 fnm으로 개발환경의 구조 이해하기

시도하고자 했던 것

  1. 패키지 관리자로 프로그램을 깔끔하게 설치하고 삭제하기

  2. fnm으로 Node.js 버전 관리

  3. WSL로 리눅스 환경 만들기 Mac이라 Pass

진행 방법

1. 패키지 관리자 설치하기

  • Windows에서는 Scoop, Mac에서는 Homebrew 설치를 추천해 주셨는데,
    다른 스터디에서 Homebrew를 설치한 적이 있어서 잘 설치되어 있는지 확인만 해 보았다.

  • 패키지 관리자로 프로그램 설치해보고, 확인해보고, 지워도 보기

    • 설치하고 리스트 확인
      brew install wget, brew list => 리스트에 wget 추가됨

    • 지우고 확인
      brew uninstall wget => wget 사라진 것 확인

      Python 스크립트의 스크린샷

2. fnm으로 Node.js 설치하기

2.1 일단 Node.js? fnm이 뭐죠?

  • Node.js가 잘 이해가 되지 않아서, GPT박사님께 여쭤보았다.

    Q. Node.js가 뭐야?
    A. Node.js는 브라우저가 없이도 자바스크립트를 실행하게 해주는 프로그램
    - 원래 자바스크립트는 Chrome, Safari 같은 웹 브라우저 안에서만 실행되는데,
    - Node.js를 쓰면 브라우저 없이도 사용이 가능하고, 파일 읽기/서버 만들/AI 툴 실행 등이 가능

    Q. 그럼 자바스크립트는 뭐야?
    A. 컴퓨터에게 동작을 시키는 프로그래밍 언어
    - 간단히는 Code가 레시피라면, Java Script는 그걸 요리하는 요리사
    - 웹사이트 기준으로 보면,
    HTML → 구조 (뼈대)

    CSS → 디자인 (꾸미기)
    JavaScript → 동작 (움직임, 행동)

    Q. 왜 AI Tool이 Node.js를 쓰는거지?
    A. Claude Code, Cursor와 같은 개발 툴이 대부분 내부적으로 Node.js 기반으로 돌아간다.

  • 이번엔, fnm이 뭐죠?

    • Fast Node Manager, fnm

    • 말 그대로 빠르게 Node.js 버전을 관리하는 도구 (only for node.js)

    • 기존에 nvm(node version manager)이라는 것이 있었는데 속도가 느린 편. fnm은 속도가 빨라서 'Fast'가 붙었다고 함

    • Node.js는 버전이 많은데, 어떤 툴은 특정 버전만 지원
      → fnm 쓰면 여러 버전을 왔다갔다 하면서 쓸 수 있음

2.2 fnm 설치

  • brew install fnm

    다양한 항목이 포함된 컴퓨터 화면의 스크린샷

2.3 fnm 셸 설정

  • 설치 후 터미널이 fnm을 자동으로 인식하도록 설정하는 단계

  • eval "$(fnm env --use-on-cd --shell zsh)” = 터미널이 켜질 때 fnm을 자동으로 활성화해라

    • fnm을 사용할 수 있게 해줌

    • 폴더 이동(cd)할 때 자동으로 Node 버전 바꿔줌 (-use-on-cd 옵션)

  • source ~/.zshrc = 방금 바꾼 설정을 지금 즉시 적용

    • 원래는 터미널을 껐다 켜야 반영되는데, 이걸 바로 적용한 것

  • 잘 설정됐나요?

    검정색 배경에 흰색 텍스트가 있는 경우

3. Node.js 버전 전환 체험하기

3.1 안정 버전

  • fnm install --lts

  • LTS = Long Term Support (장기 지원 버전)

  • Node.js는 계속 업데이트 된다..

    • 새로운 기능 추가, 성능 개선, 실험적인 기능 포함

    • 하지만 문제는, 최신 버전은 ‘버그 있을 수도 있고, 일부 라이브러리랑 충돌 가능”

    • 그래서 나온 개념이 안정화된 버전만 따로 관리하는 ‘LTS’ 관리하는 것

3.2 다른 버전도 설치하고, version list 확인

  • fnm install 20 , fnm list

  • ❓ 근데 왜 lts 설치할 때는 대시를 넣고, 20 설치할 때는 안 넣을까?

    • 이건 명령어 문법 구조 차이!

    • —lts는 옵션(option), 20은 값(value, 인자) → 옵션일 때는 —가 붙고, 값일 때는 아무것도 없이 씀

    • 예를 들어, fnm install --lts 는 특정한 동작을 지정하는 옵션. lts는 버전 이름이 아닌, 설치 방법 옵션

3.3 Node.js 버전 전환

  • fnm use 22, fnm default 20

3.4 Node.js 실행해보기

검은 화면에 있는 Python 스크립트의 스크린샷

이후 WSL 설치는 Windows 사용자에게만 해당되어, 여기까지 학습!

결과와 배운 점

이번 회차에서는 단순히 도구를 설치하는 것에서 끝나는 것이 아니라, 개발환경이 어떻게 구성되고 동작하는지에 대한 구조를 이해할 수 있었다.

우선 Homebrew를 통해 프로그램을 설치하고 삭제하는 과정을 경험하면서, 기존처럼 직접 파일을 다운로드하여 설치하는 방식이 아닌, 패키지 관리자를 통해 환경을 일관되게 관리할 수 있다는 점을 이해하였다. 이는 향후 다양한 개발 도구를 다룰 때 환경 관리의 복잡도를 크게 줄여 줄 수 있는 방식이라고 느꼈다.

또한 fnm을 활용하여 Node.js를 설치하고 버전을 관리하는 과정을 통해, 하나의 프로그램이라도 여러 버전이 존재하며, 프로젝트에 따라 요구되는 버전이 다를 수 있다는 점을 처음으로 인지하게 되었다. 특히 fnm usenode -v를 통해 실제로 버전이 변경되는 것을 확인하면서, fnm이 단순 설치 도구가 아니라 “버전 관리 도구”라는 개념을 명확히 이해할 수 있었다.

Node.js에 대해서도 단순히 이름만 알고 있던 상태에서, “브라우저 없이 자바스크립트를 실행할 수 있게 해주는 런타임”이라는 개념을 이해하게 되었고, hello.js 파일을 만들어 직접 실행해보면서 “코드를 실행한다”는 것이 단순한 개념이 아니라, 파일에 작성된 명령을 컴퓨터가 읽고 실제로 수행하는 과정이라는 것을 체감할 수 있었다.

특히 이번 실습을 통해 인상 깊었던 점은, 자바스크립트 코드 자체는 단순한 텍스트에 불과하지만, Node.js라는 실행 환경이 이를 해석하고 실행함으로써 실제 결과를 만들어낸다는 구조였다. 이를 통해 개발환경 세팅의 본질이 단순한 도구 설치가 아니라, “코드를 실행할 수 있는 상태를 만드는 것”이라는 점을 이해하게 되었다.

추가적으로, 명령어에서 --lts와 같이 옵션과 값이 구분된다는 점, 그리고 셸 설정을 통해 특정 도구를 자동으로 활성화할 수 있다는 점 등, 터미널 환경의 기본적인 동작 방식에 대해서도 함께 익힐 수 있었다.

이번 학습을 통해 단순히 따라하는 수준을 넘어, 개발 환경이 어떤 구조로 이루어져 있는지에 대한 기초적인 이해를 갖게 되었다.

1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요