Linux용 Windows 하위 시스템의 Node.js 설치(WSL2)

Linux 환경에서 Node.js 사용을 선호하거나, 성능 속도와 시스템 호출 호환성이 중요하거나, Linux 작업 영역을 활용하는 Docker 컨테이너를 실행하여 Linux 및 Windows 빌드 스크립트 모두 유지 관리하지 않으려고 하거나, Bash 명령줄만 사용하려고 하면 Linux용 Windows 하위 시스템(구체적으로는 WSL 2)에 Node.js를 설치합니다.

WSL(Linux 용 Windows 하위 시스템)을 사용하면 원하는 Linux 배포(Ubuntu가 기본)를 설치할 수도 있으므로 코드를 작성하는 개발 환경과 코드가 배포된 서버인 프로덕션 환경 사이에서 일관성을 유지할 수 있습니다.

참고 항목

Node.js를 사용하는 개발이 처음이고 빠르게 배워 시작하고 실행하려면 Node.js를 직접 Windows에 설치합니다. 이 권장 사항은 Windows Server 프로덕션 환경을 사용하려는 경우에도 적용됩니다.

WSL 2 설치

WSL 2는 Windows에서 사용할 수 있는 최신 버전이며 전문 Node.js 개발 워크플로에 권장됩니다. WSL 2를 사용하고 설치하려면 WSL 설치 문서의 단계를 따르세요. 이 단계에는 Linux 배포판(예: Ubuntu) 선택이 포함됩니다.

WSL 2와 Linux 배포판을 설치했으면 Linux 배포판(Windows 시작 메뉴에서 찾을 수 있음)을 열고 lsb_release -dc 명령을 사용하여 버전과 코드 이름을 확인합니다.

최신 패키지를 유지하기 위해 설치 직후를 포함하여 Linux 배포를 정기적으로 업데이트하는 것이 좋습니다. 이 업데이트는 Windows에서 자동으로 처리하지 않습니다. 배포를 업데이트하려면 sudo apt update && sudo apt upgrade 명령을 사용합니다.

Windows 터미널 설치(선택 사항)

Windows 터미널은 Linux 명령줄, Windows 명령 프롬프트, PowerShell, Azure CLI 또는 사용하려는 탭으로 빠르고 전환할 수 있도록 탭 여러 개를 실행할 수 있게 해주는 향상된 명령줄 셸입니다. 사용자 지정 키 바인딩(탭 열기 또는 닫기, 복사+붙여 넣기 등의 바로 가기 키) 만들기, 검색 기능 사용, 테마(색 구성표, 글꼴 스타일 및 크기, 배경 이미지/흐림/투명도)로 터미널 사용자 지정 등을 수행할 수도 있습니다. Windows 터미널 문서에서 자세히 알아보세요.

Microsoft Store를 사용하여 Windows 터미널 설치: Store를 통해 설치하면 업데이트가 자동으로 처리됩니다.

nvm, node.js 및 npm 설치

Node.js를 설치할 때 Windows 또는 WSL에 설치 여부 외에도 선택해야 할 사항이 더 있습니다. 버전이 매우 빠르게 바뀌므로 버전 관리자를 사용하는 것이 좋습니다. 작업 중인 서로 다른 프로젝트의 요구 사항에 따라 여러 Node.js 버전으로 전환해야 할 수도 있습니다. 흔히 nvm으로 불리는 노드 버전 관리자는 여러 버전의 Node.js를 설치하는 가장 인기 있는 방법입니다. nvm을 설치하는 단계와 nvm을 사용하여 Node.js 및 npm(노드 패키지 관리자)을 설치하는 단계를 살펴보겠습니다. 생각해 볼 수 있는 또 다른 버전 관리자도 있으며, 다음 섹션에서 설명하겠습니다.

Important

여러 유형을 설치하면 비정상적이고 혼란스러운 충돌이 발생할 수 있으므로, 항상 운영 체제에 설치된 기존 Node.js 또는 npm을 제거한 후 버전 관리자를 설치하는 것이 좋습니다. 예를 들어 Ubuntu의 apt-get 명령을 사용하여 설치할 수 있는 노드 버전은 오래된 버전입니다. 이전 설치를 제거하는 방법에 대한 도움말은 ubuntu에서 nodejs를 제거하는 방법을 참조하세요.

NVM 설치에 대한 최신 정보는 GitHub의 NVM 리포지토리에서 설치 및 업데이트를 참조하세요.

  1. Ubuntu 명령줄(또는 선택한 배포판)을 엽니다.

  2. sudo apt-get install curl 명령을 사용하여 cURL(명령줄을 사용하여 인터넷에서 콘텐츠를 다운로드하는 데 사용되는 도구)을 설치합니다.

  3. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash 명령을 사용하여 nvm을 설치합니다.

    참고 항목

    cURL을 사용하여 최신 버전의 NVM을 설치하면 이전 버전이 대체되고, NVM을 사용하여 설치한 노드 버전은 그대로 유지됩니다. 자세한 내용은 NVM에 대한 최신 릴리스 정보를 제공하는 GitHub 프로젝트 페이지를 참조하세요.

  4. 설치를 확인하려면 command -v nvm 명령을 입력합니다. 그러면 'nvm'이 반환됩니다. '명령을 찾을 수 없음' 메시지가 수신되거나 응답이 없으면 현재 터미널을 닫았다가 열고 다시 시도해 보세요. nvm github 리포지토리에서 자세한 정보를 알아보세요.

  5. nvm ls 명령을 사용하여 현재 설치된 노드 버전을 나열합니다.

    NVM list showing no Node versions

  6. Node.js의 현재 버전과 안정적인 LTS 버전을 모두 설치합니다. 이후 단계에서는 nvm 명령을 사용하여 Node.js의 활성 버전 간에 전환하는 방법을 알아봅니다.

    • Node.js의 현재 안정적인 LTS 릴리스를 설치합니다(프로덕션 애플리케이션에 권장). nvm install --lts
    • Node.js의 현재 릴리스를 설치합니다(최신 Node.js 기능 및 개선 사항을 테스트하지만 문제가 발생할 가능성이 높음). nvm install node
  7. nvm ls를 사용하여 설치된 노드 버전을 나열합니다. 방금 설치한 두 가지 버전이 표시될 것입니다.

    NVM list showing LTS and Current Node versions

  8. node --version 명령을 사용하여 Node.js가 설치되어 있는지 여부 및 현재 기본 버전을 확인합니다. 그런 다음, npm --version(which node 또는 which npm 명령을 사용하여 기본 버전에 사용되는 경로도 확인 가능)을(를) 사용하여 npm이 있는지 확인합니다.

  9. 프로젝트에 사용할 Node.js 버전을 변경하려면 새 프로젝트 디렉터리 mkdir NodeTest를 만들고 cd NodeTest 디렉터리로 들어간 다음, nvm use node를 입력하여 현재 버전으로 전환하거나 nvm use --lts를 입력하여 LTS 버전으로 전환합니다. nvm use v8.2.1처럼 설치한 버전의 특정 번호를 사용할 수도 있습니다. (사용 가능한 모든 Node.js 버전을 나열하려면 nvm ls-remote 명령을 사용합니다.)

NVM을 사용하여 Node.js 및 NPM을 설치하는 경우 SUDO 명령을 사용하여 새 패키지를 설치할 필요가 없습니다.

대체 버전 관리자

현재 노드에 가장 많이 사용되는 버전 관리자는 nvm이지만, 고려해 볼 수 있는 다음과 같은 다른 버전 관리자도 있습니다.

  • 오래전부터 nvm 대용으로 사용된 n은 약간 다른 명령으로 동일한 작업을 수행하며, bash 스크립트 대신 npm을 통해 설치됩니다.
  • fnm은 최신 버전의 관리자이며 nvm보다 훨씬 빠르다고 합니다. (마찬가지로 Azure Pipelines를 사용합니다.)
  • Volta는 LinkedIn 팀의 새로운 버전 관리자로, 속도 및 플랫폼 간 지원이 향상되었다고 합니다.
  • asdf-vm은 gvm, nvm, rbenv 및 pyenv 등의 여러 언어를 모두 관리할 수 있는 단일 CLI입니다.
  • nvs(노드 버전 전환기)는 플랫폼 간 nvm 대안으로, VS Code와 통합할 수 있는 기능을 제공합니다.

Visual Studio Code 설치

Node.js 프로젝트에 원격-개발 확장 팩과 함께 Visual Studio Code를 사용하는 것이 좋습니다. 이렇게 하면 VS Code가 “클라이언트-서버” 아키텍처로 분할되고, 클라이언트(VS Code 사용자 인터페이스)는 Windows 운영 체제에서 실행되고, 서버(코드, Git, 플러그 인 등)는 WSL Linux 배포판에서 "원격"으로 실행됩니다.

참고 항목

이 "원격" 시나리오는 여러분에게 익숙한 시나리오와 약간 다릅니다. WSL은 프로젝트 코드가 Windows 운영 체제와 별도로 실행되지만 여전히 로컬 컴퓨터에 있는 실제 Linux 배포판을 지원합니다. 원격 WSL 확장은 클라우드에서 실행되지 않지만 마치 원격 서버인 것처럼 Linux 하위 시스템에 연결합니다. Windows와 함께 실행되도록 설정한 WSL 환경의 로컬 컴퓨터에서 계속 실행됩니다.

IntelliJ, Sublime Text, Brackets 등 다른 코드 편집기는 WSL 2 Node.js 개발 환경에서도 작동하지만 VS Code에서 제공하는 원격 기능을 제공하지 않을 수 있습니다. 이 코드 편집기에서는 WSL 공유 네트워크 위치(\wsl$\Ubuntu\home)에 액세스하는 중에 문제가 발생길 수 있으며 사용하지 않으려는 Windows 도구를 사용하여 Linux 파일을 빌드하려고 합니다. VS Code의 원격-WSL 확장은 X 서버를 설정하는 데 필요할 수 있는 다른 IDE와 함께 이 호환성 문제를 자동으로 처리합니다. WSL에서 GUI 앱 실행 지원(예: 코드 편집기 IDE)이 곧 제공될 예정입니다.

터미널 기반 텍스트 편집기(vim, emacs, nano)는 콘솔 내에서 바로 신속하게 변경할 때도 유용합니다. Emacs, Nano 또는 Vim: 터미널 기반 텍스트 편집기 선택 문서에서는 각 편집기의 차이점과 사용 방법을 설명합니다.

VS Code 및 원격 WSL 확장을 설치하는 방법은 다음과 같습니다.

  1. Windows용 VS Code를 다운로드하여 설치합니다. VS Code는 Linux에서도 사용할 수 있지만, Linux용 Windows 하위 시스템은 GUI 앱을 지원하지 않으므로 Windows에 설치해야 합니다. 걱정하지 마세요. 여전히 Remote - WSL 확장을 사용하여 Linux 명령줄 및 도구와 통합할 수 있습니다.

  2. Remote - WSL 확장을 VS Code에 설치합니다. 이를 통해 WSL을 통합 개발 환경으로 사용하고, 호환성과 패치를 처리할 수 있습니다. 자세한 정보.

Important

VS Code가 이미 설치되어 있는 경우 Remote - WSL 확장을 설치하려면 1.35 5월 릴리스 이상이 있어야 합니다. 자동 완성, 디버깅, linting 등의 지원이 손실될 수 있으므로 VS Code에서 Remote - WSL 확장 없이 WSL을 사용하지 않는 것이 좋습니다. 재미있는 사실: 이 WSL 확장은 $HOME/.vscode-server/extensions에 설치됩니다.

유용한 VS Code 확장

VS Code는 기본적으로 Node.js 개발을 위한 여러 기능과 함께 제공되지만, Node.js 확장 팩에 제공되는 확장 중에도 설치를 고려해 볼 수 있는 유용한 확장이 몇 개 있습니다. 전부 설치해도 되고 가장 유용하다고 생각되는 부분만 선택해서 설치해도 됩니다.

Node.js 확장 팩을 설치하는 방법은 다음과 같습니다.

  1. VS Code에서 확장 창을 엽니다(Ctrl+Shift+X).

    이제 확장 창은 다음과 같은 세 가지 섹션으로 구분됩니다(원격 WSL 확장을 설치했기 때문에).

    • "Local - Installed": Windows 운영 체제에서 사용하기 위해 설치된 확장입니다.
    • "WSL:Ubuntu-18.04-Installed": Ubuntu 운영 체제(WSL)에 사용하기 위해 설치된 확장입니다.
    • "권장": 현재 프로젝트의 파일 형식에 따라 VS Code에서 권장하는 확장입니다.

    VS Code Extensions Local vs Remote

  2. 확장 창의 맨 위에 있는 검색 상자에 노드 확장 팩(또는 찾고 있는 확장의 이름)을 입력합니다. 현재 프로젝트가 열려 있는 위치에 따라 VS Code의 로컬 또는 WSL 인스턴스에 대한 확장이 설치됩니다. VS Code 창의 왼쪽 아래 모서리에 있는 원격 링크(녹색)를 선택하여 알 수 있습니다. 원격 연결을 열거나 닫는 옵션이 제공됩니다. "WSL:Ubuntu-18.04" 환경에 Node.js 확장을 설치합니다.

    VS Code remote link

다음과 같은 몇 가지 추가 확장도 고려해 볼 수 있습니다.

  • JavaScript 디버거: Node.js를 사용하여 서버 쪽에서 개발을 마친 후에는 클라이언트 쪽에서 개발하고 테스트해야 합니다. 이 확장은 DAP 기반 JavaScript 디버거입니다. Node.js, Chrome, Edge, WebView2, VS Code 확장 등을 디버그합니다.
  • 다른 편집기의 키맵: Atom, Sublime, Vim, eMacs, Notepad++ 등의 다른 텍스트 편집기에서 전환할 때 이러한 확장을 사용하여 익숙한 환경을 만들 수 있습니다.
  • 설정 동기화: GitHub을 사용하는 여러 설치에서 VS Code 설정을 동기화할 수 있습니다. 여러 머신에서 작업하는 경우 이렇게 하면 여러 머신의 환경을 일관되게 유지할 수 있습니다.

Git 설치(선택 사항)

WSL에서 Node.js 프로젝트를 위해 Git을 설정하려면 WSL 문서에서 Linux용 Windows 하위 시스템에 Git 사용 시작 문서를 참조하세요.