Instalación de Node.js en el Subsistema de Windows para Linux (WSL2)

Si usa Node.js para fines profesionales, si es importante encontrar la velocidad de rendimiento y la compatibilidad de llamadas del sistema, si desea ejecutar contenedores de Docker que aprovechen las áreas de trabajo de Linux y eviten tener que mantener scripts de compilación de Linux y Windows, o simplemente prefiere usar una línea de comandos de Bash, seguramente querrá instalar Node.js en el Subsistema de Windows para Linux (más concretamente en WSL 2).

El Subsistema de Windows para Linux (WSL) le permite instalar la distribución de Linux que prefiera (Ubuntu es nuestra distribución predeterminada) para que pueda tener coherencia entre el entorno de desarrollo (donde escribe código) y el de producción (el servidor en el que se implementa el código).

Nota

Si es la primera vez que usa Node.js para sus desarrollos y desea empezar a aprender rápidamente, instale Node.js en Windows. Esta recomendación también le resultará útil si planea usar un entorno de producción de Windows Server.

Instalación de WSL 2

WSL 2 es la versión más reciente disponible en Windows y se recomienda para flujos de trabajo de desarrollo de Node.js profesionales. Para habilitar e instalar WSL 2, sigue los pasos que se describen en la documentación de instalación de WSL. Estos pasos incluirán la elección de una distribución de Linux (por ejemplo, Ubuntu).

Una vez que hayas instalado WSL 2 y una distribución de Linux, abre la distribución de Linux (puedes encontrarla en el menú Inicio de Windows), y comprueba la versión y el nombre de código mediante el comando: lsb_release -dc.

Se recomienda actualizar la distribución de Linux con regularidad, incluso inmediatamente después de instalarla, para asegurarse de que tiene los paquetes más recientes. Windows no controla automáticamente esta actualización. Para actualizar la distribución, usa el comando: sudo apt update && sudo apt upgrade.

Instalación de Terminal Windows (opcional)

Terminal Windows es un shell de línea de comandos mejorado que permite ejecutar varias pestañas, con el fin de que pueda cambiar rápidamente de línea de comandos de Linux, símbolo del sistema de Windows, PowerShell, CLI de Azure, o lo que prefiera usar. También puede crear enlaces de teclado personalizados (teclas de método abreviado para abrir o cerrar pestañas, copiar y pegar, etc.), usar la característica de búsqueda, personalizar el terminal con temas (combinaciones de colores, estilos y tamaños de fuente, imagen de fondo/desenfoque/transparencia), etc. Encontrará más información en la documentación de Terminal Windows.

Instalación de Terminal Windows desde Microsoft Store: si la instalación se realiza a través de Microsoft Store, las actualizaciones se controlan automáticamente.

Instalación de nvm, node.js y npm

Además de elegir si se desea realizar la instalación en Windows o WSL, al instalar Node.js es preciso elegir más opciones. Se recomienda usar un administrador de versiones, ya que las versiones cambian con mucha rapidez. Es probable que tenga que cambiar de versión de Node.js en función de las necesidades de los distintos proyectos en los que se trabaje. El administrador de versiones de Node, más comúnmente denominado nvm, es la forma más habitual de instalar varias versiones de Node.js. Te guiaremos por los pasos necesarios para instalar nvm y luego usarlo para instalar Node.js y el administrador de paquetes de Node (npm). Hay administradores de versiones alternativos para tener en cuenta, que también se tratan en la sección siguiente.

Importante

Siempre se recomienda quitar cualquier instalación existente de Node.js o npm del sistema operativo antes de instalar un administrador de versiones, ya que los distintos tipos de instalación pueden provocar conflictos extraños y confusos. Por ejemplo, la versión de Node que se puede instalar con el comando apt-get de Ubuntu está obsoleta actualmente. Para obtener ayuda con la eliminación de instalaciones anteriores, consulta Cómo eliminar nodejs de Ubuntu.

  1. Abra la línea de comandos de Ubuntu (o la distribución que prefiera).

  2. Instala cURL (una herramienta que se usa para descargar contenido de Internet en la línea de comandos) con: sudo apt-get install curl

  3. Instala nvm con: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash

    Nota

    La instalación de una versión más reciente de NVM con cURL reemplazará la anterior, lo que dejará intacta la versión de Node utilizada para instalar NVM. Consulte la página del proyecto de GitHub para obtener información de la versión más reciente de NVM.

  4. Para verificar la instalación, escribe: command -v nvm... esto debería devolver "nvm"; si recibes "No se encuentra el comando" o ninguna respuesta, cierra el terminal actual, vuelve a abrirlo e inténtalo de nuevo. Obtén más información en el repositorio de GitHub de nvm.

  5. Enumera qué versiones de Node están instaladas actualmente (en este momento no debe haber ninguna): nvm ls

    NVM list showing no Node versions

  6. Instale las versiones de LTS actual y estable de Node.js. En un paso posterior, aprenderá a cambiar entre las versiones activas de Node.js con un comando nvm.

    • Instale la versión LTS estable actual de Node.js (recomendada para aplicaciones de producción): nvm install --lts
    • Instale la versión actual de Node.js (para probar las características y mejoras de Node.js más recientes, pero con más probabilidad de presentar problemas): nvm install node
  7. Enumera qué versiones de Node están instaladas: nvm ls... ahora deberías ver las dos versiones que acabas de instalar.

    NVM list showing LTS and Current Node versions

  8. Comprueba que Node.js está instalado y la versión predeterminada actualmente con: node --version. Después, comprueba que también tienes npm, con: npm --version (También puedes usar which node o which npm para ver la ruta de acceso utilizada para las versiones predeterminadas).

  9. Para cambiar la versión de Node.js que deseas usar para un proyecto, crea un directorio de proyecto mkdir NodeTest, escribe el directorio cd NodeTest y, a continuación, escribe nvm use node, para cambiar a la versión actual, o bien nvm use --lts para cambiar a la versión de LTS. También puedes usar el número específico de cualquier versión adicional que hayas instalado, como nvm use v8.2.1. (Para enumerar todas las versiones de Node.js disponibles, usa el comando: nvm ls-remote).

Si usas NVM para instalar Node.js y NPM, no es necesario usar el comando SUDO para instalar nuevos paquetes.

Administradores de versiones alternativos

Aunque nvm es actualmente el administrador de versiones más popular para Node, existen algunas alternativas que se deben tener en cuenta:

  • n es una alternativa a nvm de larga duración que consigue lo mismo con comandos ligeramente diferentes y se instala a través de npm en lugar de con un script de Bash.
  • fnm es un administrador de versiones más reciente, lo que exige que sea mucho más rápido que nvm. (También utiliza Azure Pipelines).
  • Volta es un nuevo administrador de versiones del equipo de LinkedIn que notifica la velocidad mejorada y la compatibilidad multiplataforma.
  • asdf-vm es una única CLI para varios lenguajes, como ike gvm, nvm, rbenv & pyenv y muchos más, todo en uno.
  • nvs (conmutador de versiones de Node) es una alternativa nvm multiplataforma con la capacidad de integrarse con VS Code.

Instalar Visual Studio Code

Se recomienda usar Visual Studio Code con el paquete de la extensión Remote-development en los proyectos de Node.js. Esto divide VS Code en una arquitectura "cliente-servidor", con el cliente (la interfaz de usuario de VS Code) que se ejecuta en el sistema operativo Windows y el servidor (código, Git, complementos, etc.) que se ejecuta "remotamente" en la distribución Linux de WSL.

Nota

Este escenario "remoto" es un poco diferente del que puede estar acostumbrado. WSL admite una distribución de Linux real en la que se ejecuta el código del proyecto, independientemente del sistema operativo Windows, pero todavía en la máquina local. La extensión Remote-WSL se conecta con el subsistema de Linux como si fuera un servidor remoto, aunque no se está ejecutando en la nube… todavía se ejecuta en la máquina local, en el entorno de WSL que ha habilitado para ejecutarse junto con Windows.

Otros editores de código, como IntelliJ, Sublime Text, Brackets, etc., también funcionarán con un entorno de desarrollo Node.js de WSL 2, pero es posible que no tengan el mismo tipo de características remotas que ofrece VS Code. Estos editores de código pueden tener problemas para acceder a la ubicación de red compartida de WSL (\wsl$\Ubuntu\home) e intentarán compilar los archivos de Linux mediante las herramientas de Windows, aunque puede que no sean las que quiere. La extensión Remote-WSL de VS Code controla automáticamente esta compatibilidad, con otros IDE que puede que necesite para configurar un servidor X. La compatibilidad con la ejecución de aplicaciones de GUI en WSL (como un IDE del editor de código) estará disponible próximamente.

Los editores de texto basados en terminal (vim, emacs y nano) también son útiles para realizar cambios rápidos directamente en la consola. En el artículo sobre cómo elegir inteligentemente uno de estos tres editores de texto basados en terminal: Emacs, Nano o Vim no solo se explican perfectamente algunas de las diferencias entre los distintos editores, sino también cómo usar cada uno de ellos.

Para instalar VS Code y la extensión Remote-WSL:

  1. Descarga e instala VS Code para Windows. VS Code también está disponible para Linux, pero el Subsistema de Windows para Linux no admite aplicaciones de GUI, por lo que deberemos instalarlo en Windows. Pero no te preocupes. Igualmente podrás realizar la integración con la línea de comandos y las herramientas de Linux mediante la extensión Remote-WSL.

  2. Instala la extensión Remote-WSL de VS Code. De este modo, podrás usar WSL como entorno de desarrollo integrado y la compatibilidad y las rutas se controlarán automáticamente. Más información.

Importante

Si ya tienes VS Code instalado, deberás asegurarte de que dispones de la versión 1.35 de mayo o una posterior a fin de poder instalar la extensión Remote-WSL. No te recomendamos que uses WSL en VS Code sin la extensión Remote-WSL, ya que perderás la compatibilidad con Autocompletar, la depuración, la detección de errores, etc. Dato curioso: Esta extensión de WSL se instala en $HOME/.vscode-server/extensions.

Extensiones útiles de VS Code

Aunque VS Code incluye muchas características para el desarrollo con Node.js listas para usar, existen algunas extensiones útiles que puedes instalar y que se encuentran disponibles en el paquete de extensiones de Node.js. Instálalas todas o selecciona y elige la opción que te resulte más útil.

Para instalar el paquete de extensiones de Node.js:

  1. Abre la ventana Extensiones (Ctrl+Mayús+X) en VS Code.

    La ventana Extensiones ahora está dividida en tres secciones (porque has instalado la extensión Remote-WSL).

    • "Local - Installed": las extensiones instaladas para utilizarlas con el sistema operativo Windows.
    • "WSL:Ubuntu-18.04-Installed": las extensiones instaladas para utilizarlas con el sistema operativo Ubuntu (WSL).
    • "Recommended": las extensiones recomendadas por VS Code según los tipos de archivo del proyecto actual.

    VS Code Extensions Local vs Remote

  2. En el cuadro de búsqueda de la parte superior de la ventana Extensiones, escribe: Paquete de extensiones de Node o el nombre de cualquier extensión que estés buscando. La extensión se instalará para las instancias locales o WSL de VS Code, dependiendo de dónde tengas abierto el proyecto actual. Puedes indicarlo si seleccionas el vínculo remoto en la esquina inferior izquierda de la ventana de VS Code (en verde). Ofrecerá la opción de abrir o cerrar una conexión remota. Instala las extensiones de Node.js en el entorno "WSL:Ubuntu-18.04".

    VS Code remote link

Algunas de las extensiones adicionales que puedes considerar son las siguientes:

  • JavaScript Debugger: una vez que hayas terminado de desarrollar en el lado servidor con Node.js, deberás desarrollar y probar el lado cliente. Esta extensión es un depurador de JavaScript basado en DAP. Depura Node.js, Chrome, Edge, WebView2, extensiones de VS Code y más.
  • Keymaps from other editors: estas extensiones pueden ayudarte a sentirte como en casa con tu entorno en caso de que realices la transición desde otro editor de texto (como Atom, Sublime, Vim, eMacs, Notepad++, etc.).
  • Settings Sync: te permite sincronizar la configuración de VS Code entre diferentes instalaciones mediante GitHub. Si trabajas en diferentes máquinas, te ayuda a mantener el entorno coherente entre ellas.

Configuración de GIT (opcional)

Si quiere configurar GIT para un proyecto de Node.js en WSL, consulte el artículo Introducción al uso de GIT en el Subsistema de Windows para Linux en la documentación de WSL.