Установка Node.js в подсистеме Windows для Linux (WSL 2)

Если вы используете Node.js профессионально, вам нужно оптимизировать скорость и производительность, обеспечить совместимость системных вызовов, выполнять контейнеры Docker, которые используют рабочие области Linux, вы не хотите одновременно обслуживать скрипты сборки Linux и Windows или же просто предпочитаете использовать командную строку Bash, установите Node.js в подсистеме Windows для Linux (а именно, WSL 2).

С помощью подсистемы Windows для Linux (WSL) можно установить предпочитаемый вами дистрибутив 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.

Установите Терминал Windows из Microsoft Store. При установке через магазин обновления выполняются автоматически.

Установка nvm, Node.js и npm

Наряду с возможностью выбора системы для разработки (Windows или WSL) при установке Node.js доступны и другие возможности. Мы рекомендуем использовать диспетчер версий, так как версии меняются достаточно быстро. Вероятно, вам нужно будет переключаться между несколькими версиями Node.js в зависимости требований разных проектов, над которыми вы работаете. Диспетчер версий Node Version Manager, чаще называемый nvm, является наиболее популярным средством установки нескольких версий Node.js. Мы выполним описанные ниже шаги, чтобы установить nvm, а затем используем его для установки Node.js и диспетчера пакетов Node Package Manager (npm). Существуют также альтернативные диспетчеры версий, которые описаны в следующем разделе.

Важно!

Рекомендуем всегда удалять любые имеющиеся установки Node.js или npm из операционной системы перед установкой диспетчера версий, так как эти установки могут создавать необычные и запутанные конфликты. Например, версия Node, которую можно установить с помощью команды apt-get в Ubuntu, уже устарела. Справку по удалению предыдущих установок см. на странице об удалении Node.js из Ubuntu.

  1. Откройте командную строку Ubuntu (или другой дистрибутив).

  2. Установите cURL (инструмент, используемый для скачивания содержимого из Интернета в командной строке), выполнив команду sudo apt-get install curl.

  3. Установите nvm с помощью команды curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash.

    Примечание

    По состоянию на 25 января 2022 г. НВМ 0.39.1 — это самая последняя доступная версия. На этой странице проекта GitHub можно проверить наличие последнего выпуска nvm. Вы можете настроить команду выше, чтобы она включала в себя последнюю версию. Установка новой версии nvm с помощью cURL заменит старую версию, оставив без изменений версию Node, для установки которой вы использовали nvm. Пример: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

  4. Чтобы проверить установку, введите command -v nvm. Команда должна вернуть nvm. В случае возврата command not found (команда не найдена) или отсутствия ответа закройте терминал, откройте его снова и повторите попытку. Дополнительные сведения см. в репозитории nvm на сайте GitHub.

  5. Вызовите список установленных на данный момент версий Node с помощью команды nvm ls. На этом этапе список должен быть пуст.

    NVM list showing no Node versions

  6. Установите текущие и стабильные (LTS) версии Node.js. На следующем шаге вы узнаете, как переключаться между активными версиями Node.js с помощью команды nvm.

    • Установите текущий стабильный выпуск (LTS) для Node.js (рекомендуется для приложений в рабочей среде) с помощью команды nvm install --lts.
    • Установите текущий выпуск Node.js (в нем вы сможете протестировать последние функции и улучшения Node.js, но вероятность возникновения проблем при этом будет велика) с помощью команды nvm install node.
  7. Вызовите список установленных версий Node, выполнив команду nvm ls. Теперь в нем должны отображаться две недавно установленные версии.

    NVM list showing LTS and Current Node versions

  8. Проверьте установку Node.js и текущую версию по умолчанию с помощью команды node --version. Затем проверьте наличие npm, выполнив команду npm --version (вы также можете использовать which node или which 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 в настоящее время является самым популярным менеджером версий для Node, есть несколько альтернативных вариантов:

  • n — это давняя альтернатива nvm, которая выполняет те же процессы с помощью немного отличающихся команд и устанавливается с помощью npm, а не скрипта bash.
  • fnm —это более новый диспетчер версий, заявленный как более быстрый, чем nvm. (Он также использует конвейеры Azure.)
  • Volta — это новый диспетчер версий, созданный командой LinkedIn. Заявлено, что он отличается увеличенной скоростью и межплатформенной поддержкой.
  • asdf-vm — это единый интерфейс командной строки для нескольких языков, объединяющий в себе gvm, nvm, rbenv & pyenv (и много других).
  • nvs (Node Version Switcher) — это кроссплатформенный вариант nvm с возможностью интеграции с VS Code.

Установка Visual Studio Code

Для проектов Node.js мы рекомендуем использовать Visual Studio Code с пакетом расширения Remote-development. Это расширение преобразует VS Code в архитектуру "клиент — сервер", где клиент (пользовательский интерфейс VS Code) выполняется в вашей ОС Windows, а сервер (ваш код, Git, плагины и т. д.) — удаленно на дистрибутиве WSL Linux.

Примечание

Этот удаленный сценарий немного отличается от того, к которому вы привыкли. WSL поддерживает фактический дистрибутив Linux, в котором выполняется код проекта, отдельно от операционной системы Windows, но на том же локальном компьютере. Расширение Remote-WSL подключается к подсистеме Linux, как будто это удаленный сервер, хотя он не работает в облаке. Он по-прежнему выполняется на локальном компьютере в среде WSL, которую вы включили для запуска вместе с Windows.

  • Поддерживаются IntelliSense и анализ кода на основе Linux.
  • Проекты автоматически встраиваются в Linux.
  • Можно использовать расширения, работающие в Linux (ES Lint, NPM Intellisense, фрагменты ES6 и т. д.).

Другие редакторы кода, такие как IntelliJ, Sublime Text, Brackets и т. д., также будут работать со средой разработки Node.js в WSL 2, но могут не поддерживать весь набор возможностей удаленного взаимодействия, предлагаемых VS Code. При использовании таких редакторов кода могут возникать проблемы с доступом к общему сетевому расположению WSL (\wsl$\Ubuntu\home). В этом случае редактор попытается создать файлы Linux с помощью средств Windows, что может быть нежелательным. Расширение Remote-WSL в VS Code обеспечивает совместимость, тогда как при использовании других IDE вам, возможно, нужно будет настроить сервер X. В ближайшее время планируется включение поддержки для выполнения приложений GUI в WSL (например, IDE редактора кода).

Текстовые редакторы на основе терминала (Vim, Emacs, nano) также полезны для внесения быстрых изменений прямо из консоли. В статье, посвященной особенностям выбора текстового редактора на основе терминала (Emacs, Nano или Vim), объясняются различия между разными средствами и описаны способы их использования.

Чтобы установить VS Code и расширение Remote-WSL, сделайте следующее:

  1. Скачивание и установка VS Code для Windows. VS Code также доступен для Linux, но подсистема Windows для Linux не поддерживает приложения с графическим пользовательским интерфейсом, поэтому нам нужно установить его в Windows. Не волнуйтесь, вы по-прежнему сможете выполнить интеграцию с командной строкой и инструментами Linux с помощью расширения Remote — WSL.

  2. Установите расширение Remote — WSL в VS Code. Это позволит вам использовать WSL в качестве интегрированной среды разработки и обеспечит совместимость и путь к ней. Подробнее.

Важно!

Если у вас уже установлен VS Code, убедитесь, что имеете выпуск 1.35 от мая или более поздней версии, чтобы установить расширение Remote — WSL. Мы не рекомендуем использовать WSL в VS Code без расширения Remote — WSL, так как вы потеряете поддержку автозавершения, отладки, анализа кода и т. д. Интересный факт: это расширение WSL устанавливается в $HOME/.vscode-server/extensions.

Полезные расширения VS Code

Несмотря на то что VS Code поставляется с множеством возможностей для разработки Node.js, есть несколько полезных рекомендуемых расширений, доступных в пакете расширений Node.js. Установите их все или выберите наиболее полезные для вас.

Чтобы установить пакет расширений Node.js, сделайте следующее:

  1. Откройте в VS Code окно Расширения (нажав клавиши CTRL+SHIFT+X).

    Окно расширений теперь разделено на три раздела (так как вы установили расширение Remote-WSL).

    • "Local - Installed" (Локальные — установленные) — расширения, установленные для использования с операционной системой Windows.
    • WSL:Ubuntu-18.04-Installed — расширения, установленные для использования с операционной системой Ubuntu (WSL).
    • "Рекомендуется" — рекомендованные VS Code расширения на основе типов файлов в текущем проекте.

    VS Code Extensions Local vs Remote

  2. В поле поиска в верхней части окна расширений введите: Node Extension Pack (Пакет расширений Node) (или имя любого расширения, которое необходимо найти). Расширение будет установлено для локальных экземпляров или WSL-экземпляров VS Code (в зависимости от того, где открыт текущий проект). Это можно проверить, щелкнув удаленную ссылку в нижнем левом углу окна VS Code (выделенную зеленым цветом). Эта ссылка позволяет открыть или закрыть удаленное подключение. Установите расширения Node.js в среде WSL:Ubuntu-18.04.

    VS Code remote link

К дополнительным рекомендуемым расширениям относятся следующие:

  • Отладчик JavaScript: когда вы закончите разработку на стороне сервера с помощью Node.js, вам нужно будет разработать и протестировать клиентскую часть. Это расширение является отладчиком JavaScript на основе DAP. Оно выполняет отладку расширений Node.js, Chrome, Edge, WebView2, VS Code и др.
  • Раскладки клавиатуры других редакторов — эти расширения позволят использовать необходимую раскладку при переходе в другой текстовый редактор (например, Atom, Sublime, Vim, eMacs, Notepad++ и т. п.).
  • Расширение синхронизации параметров — позволяет синхронизировать параметры VS Code в разных установках, используя GitHub. Если вы работаете на разных компьютерах, это обеспечит согласованность среды между ними.

Настройка Git (необязательно)

Чтобы настроить Git для проекта Node.js в WSL, см. статью Начало работы с Git в подсистеме Windows для Linux в документации по WSL.