Installare Node.js in sottosistema Windows per Linux (WSL2)

Se si usa Node.js professionalmente, trovare la velocità delle prestazioni e la compatibilità delle chiamate di sistema importanti, si vuole eseguire contenitori Docker che sfruttano le aree di lavoro Linux ed evitare di dover gestire sia Linux che Windows script di compilazione o semplicemente preferire l'uso di una riga di comando Bash, quindi si vuole installare Node.js nella sottosistema Windows per Linux (in particolare, WSL 2).

L'uso di sottosistema Windows per Linux (WSL), consente di installare la distribuzione Linux preferita (Ubuntu è il valore predefinito) in modo che sia possibile avere coerenza tra l'ambiente di sviluppo (in cui si scrive codice) e l'ambiente di produzione (il server in cui viene distribuito il codice).

Nota

Se non si ha familiarità con lo sviluppo con Node.js e si vuole iniziare rapidamente a funzionare in modo da poter imparare, installare Node.js in Windows. Questa raccomandazione si applica anche se si prevede di usare un ambiente di produzione Windows Server.

Installare WSL 2

WSL 2 è la versione più recente disponibile per Windows e è consigliabile per i flussi di lavoro di sviluppo Node.js professionali. Per abilitare e installare WSL 2, segui i passaggi descritti nella documentazione per l'installazione di WSL. Questa procedura include la scelta di una distribuzione di Linux, ad esempio Ubuntu.

Dopo aver installato WSL 2 e una distribuzione di Linux, apri la distribuzione di Linux (disponibile nel menu Start di Windows) e controlla la versione e il nome in codice usando il comando: lsb_release -dc.

Consigliamo di aggiornare regolarmente la distribuzione di Linux, anche subito dopo l'installazione, per assicurarti di disporre dei pacchetti più recenti. Windows non gestisce automaticamente l'aggiornamento. Per aggiornare la distribuzione, usa il comando: sudo apt update && sudo apt upgrade.

Installare Terminale Windows (facoltativo)

Terminale Windows è una shell della riga di comando migliorata che consente di eseguire più schede in modo che sia possibile passare rapidamente tra le righe di comando linux, Windows prompt dei comandi, PowerShell, l'interfaccia della riga di comando di Azure o qualsiasi cosa si preferisca usare. È anche possibile creare associazioni di chiavi personalizzate (tasti di scelta rapida per l'apertura o la chiusura di schede, copia+incolla e così via), usare la funzionalità di ricerca, personalizzare il terminale con temi (combinazioni di colori, stili di carattere e dimensioni, immagine di sfondo/blur/trasparenza) e altro ancora. Altre informazioni sono disponibili nella documentazione Terminale Windows.

Installare Terminale Windows usando il Microsoft Store: installando tramite l'archivio, gli aggiornamenti vengono gestiti automaticamente.

Installare nvm, Node.js e npm

Oltre a scegliere se installare in Windows o WSL, sono disponibili opzioni aggiuntive per l'installazione di Node.js. È consigliabile usare uno strumento di gestione delle versioni perché le versioni cambiano molto rapidamente. Probabilmente è necessario passare da più versioni di Node.js in base alle esigenze di progetti diversi che si sta lavorando. Node Version Manager, più comunemente denominato nvm, è il modo più comune per installare più versioni di Node.js Esamineremo in dettaglio i passaggi per installare nvm e quindi lo useremo per installare Node.js e Node Package Manager (npm). Sono disponibili anche strumenti di gestione delle versioni alternativi che verranno trattati nella sezione successiva.

Importante

È sempre consigliabile rimuovere eventuali installazioni esistenti di Node.js o npm dal sistema operativo prima di installare uno strumento di gestione delle versioni dal momento che i diversi tipi di installazione possono portare a conflitti anomali e confusi. Ad esempio, la versione di Node che può essere installata con il comando apt-get di Ubuntu è attualmente obsoleta. Per informazioni sulla rimozione di installazioni precedenti, vedi How to remove nodejs from ubuntu (Come rimuovere nodejs da Ubuntu).

  1. Aprire la riga di comando Ubuntu (o la distribuzione desiderata).

  2. Installa cURL (uno strumento usato per scaricare il contenuto da Internet nella riga di comando) con sudo apt-get install curl

  3. Installa nvm con curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

    Nota

    A partire dal 25 gennaio 2022, NVM v0.39.1 è la versione più recente disponibile. Puoi controllare la pagina del progetto GitHub per la versione più recente di NVM e modificare il comando precedente per includere la versione più recente. L'installazione della versione più recente di NVM con cURL sostituirà quella precedente, lasciando intatta la versione di Node che hai usato per l'installazione di NVM. Ad esempio: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

  4. Per verificare l'installazione, immetti command -v nvm. Questo dovrebbe restituire "nvm", se visualizzi "command not found" (comando non trovato) o non ricevi risposta, chiudi il terminale corrente, riaprilo e riprova. Per altre informazioni, vedi il repository di GitHub nvm.

  5. Elenca le versioni di Node attualmente installate (non dovrebbero esserci in questo punto): nvm ls

    NVM list showing no Node versions

  6. Installare sia le versioni LTS correnti che stabili di Node.js. In un passaggio successivo si apprenderà come passare da versioni attive di Node.js a un nvm comando.

    • Installare la versione LTS stabile corrente di Node.js (consigliata per le applicazioni di produzione): nvm install --lts
    • Installare la versione corrente di Node.js (per testare le funzionalità e i miglioramenti più recenti Node.js, ma è più probabile che si verifichino problemi): nvm install node
  7. Elenca le versioni di Node installate: nvm ls. Verranno ora elencate le due versioni appena installate.

    NVM list showing LTS and Current Node versions

  8. Verifica che Node.js sia installato e la versione attualmente predefinita con node --version. Verifica quindi di avere anche npm con npm --version (puoi anche usare which node o which npm per visualizzare il percorso usato per le versioni predefinite).

  9. Per cambiare la versione di Node.js che vuoi usare per un progetto, crea una nuova directory di progetto mkdir NodeTest, immetti la directory cd NodeTest, quindi immetti nvm use node per passare alla versione corrente o nvm use --lts per passare alla versione LTS. Puoi anche usare il numero specifico per tutte le versioni aggiuntive installate, ad esempio nvm use v8.2.1 (per elencare tutte le versioni di Node.js disponibili, usa il comando nvm ls-remote).

Se usi NVM per installare Node.js e NPM, non è necessario usare il comando SUDO per installare nuovi pacchetti.

Strumenti di gestione delle versioni alternativi

Sebbene nvm sia attualmente lo strumento di gestione delle versioni più diffuso per Node, esistono alcune alternative da tenere in considerazione:

  • n è un'alternativa a nvm di lunga durata che esegue la stessa operazione con comandi leggermente diversi e viene installata tramite npm anziché uno script Bash.
  • fnm è uno strumento di gestione delle versioni più recente che dovrebbe essere molto più veloce rispetto a nvm (usa anche Pipeline di Azure).
  • Volta è un nuovo strumento di gestione delle versioni del team LinkedIn che, secondo quanto dichiarato, garantisce una maggiore velocità e supporto multipiattaforma.
  • asdf-vm è un'unica interfaccia della riga di comando per più lingue, ad esempio ike gvm, nvm, rbenv & pyenv (e altro ancora).
  • nvs (Node Version Switcher) è un'alternativa multipiattaforma a nvm con possibilità di integrazione con VS Code.

Installare Visual Studio Code

È consigliabile usare Visual Studio Code con il pacchetto di estensione per lo sviluppo remoto per i progetti di Node.js. In questo modo, VS Code viene diviso in un'architettura "client-server", con il client (l'interfaccia utente VS Code) eseguito nel sistema operativo Windows e il server (codice, Git, plug-in e così via) eseguito "in remoto" nella distribuzione Linux WSL.

Nota

Questo scenario "remoto" è leggermente diverso dal solito. WSL supporta una distribuzione Linux effettiva in cui il codice del progetto viene eseguito separatamente dal sistema operativo Windows, ma sempre nel computer locale. L'estensione Remote-WSL si connette al sottosistema Linux come se fosse un server remoto, anche se non è in esecuzione nel cloud ma sempre nel computer locale all'interno dell'ambiente WSL che è stato abilitato per l'esecuzione insieme a Windows.

Altri editor di codice, come IntelliJ, Sublime Text, Parentesi quadre e così via, funzioneranno anche con un ambiente di sviluppo WSL 2 Node.js, ma potrebbe non avere lo stesso tipo di funzionalità remote offerte da VS Code. Questi editor di codice potrebbero riscontrare problemi durante l'accesso al percorso di rete condiviso WSL (\wsl$\Ubuntu\home) e tenterà di creare i file Linux usando strumenti di Windows, che probabilmente non sono quelli desiderati. L'estensione Remote-WSL in VS Code gestisce questa compatibilità con altri ID che potrebbero essere necessari per configurare un server X. Il supporto per l'esecuzione di app GUI in WSL (ad esempio un IDE dell'editor di codice) sarà presto disponibile.

Gli editor di testo basati su terminale (vim, emacs, nano) sono utili anche per apportare modifiche rapide direttamente all'interno della console L'articolo , Emacs, Nano o Vim: scegliere l'editor di testo Terminal-Based fa un bel lavoro che spiega alcune differenze e un po' su come usare ogni oggetto.

Per installare VS Code e l'estensione Remote - WSL:

  1. Scaricare e installare VS Code per Windows. VS Code è disponibile anche per Linux, ma il sottosistema Windows per Linux non supporta le app GUI, quindi deve essere installato in Windows. Non c'è bisogno di preoccuparsi, perché sarà comunque possibile integrarlo con la riga di comando e gli strumenti di Linux usando l'estensione Remote - WSL.

  2. Installare l'estensione Remote - WSL in VS Code. Questo consente di usare WSL come ambiente di sviluppo integrato e gestirà la compatibilità e il percorso per l'utente. Altre informazioni.

Importante

Se VS Code è già stato installato, è necessario assicurarsi di disporre della versione 1.35 di maggio o di una versione successiva per installare l'estensione Remote - WSL. Non è consigliabile usare WSL in VS Code senza l'estensione Remote - WSL, in quanto si perderà il supporto per completamento automatico, debug, linting e così via. Curiosità: questa estensione WSL è installata in $HOME/.vscode-server/extensions.

Estensioni VS Code utili

Anche se VS Code include diverse funzionalità predefinite per lo sviluppo di Node.js, nel pacchetto di estensioni Node.js sono disponibili alcune utili estensioni da poter installare. Installale tutte o seleziona l'opzione che risulta più utile per te.

Per installare il pacchetto di estensioni Node.js:

  1. Apri la finestra Extensions (Estensioni) (Ctrl+Shift+X) in VS Code.

    La finestra Extensions (Estensioni) è ora divisa in tre sezioni, perché hai installato l'estensione Remote-WSL.

    • "Local - Installed" (Installate localmente): estensioni installate per l'uso con il sistema operativo Windows.
    • "WSL:Ubuntu-18.04-Installed" (Installate per WSL:Ubuntu-18.04-Installed): estensioni installate per l'uso con il sistema operativo Ubuntu (WSL).
    • "Recommended" (Consigliate): estensioni consigliate da VS Code in base ai tipi di file nel progetto corrente.

    VS Code Extensions Local vs Remote

  2. Nella casella di ricerca nella parte superiore della finestra Extensions (Estensioni) immetti: Node Extension Pack (o il nome dell'estensione che stai cercando). L'estensione verrà installata per le istanze locali o WSL di VS Code a seconda della posizione in cui è stato aperto il progetto corrente. Lo puoi determinare selezionando il collegamento remoto nell'angolo in basso a sinistra della finestra di VS Code (in verde). Consente di aprire o chiudere una connessione remota. Installa le estensioni Node.js nell'ambiente "WSL:Ubuntu-18.04".

    VS Code remote link

Di seguito sono riportate alcune estensioni aggiuntive da tenere in considerazione:

  • Debugger per Chrome: dopo aver terminato lo sviluppo sul lato server con Node.js, dovrai sviluppare e testare il lato client. Questa estensione integra l'editor di VS Code con il servizio di debug del browser Chrome, rendendo più efficienti le operazioni.
  • Mappature tastiera di altri editor: queste estensioni contribuiscono a evitare differenze nel tuo ambiente se stai eseguendo la transizione da un altro editor di testo (come Atom, Sublime, Vim, eMacs, Notepad++ e così via).
  • Settings Sync: consente di sincronizzare le impostazioni di VS Code tra diverse installazioni usando GitHub. Usa questa estensione per garantire la coerenza dell'ambiente in computer diversi.

Configurazione di Git (facoltativo)

Per configurare Git per un progetto di Node.js in WSL, vedere l'articolo Attività iniziali usando Git in sottosistema Windows per Linux nella documentazione di WSL.