Moving Your JavaScript Development To Bash On Windows

About The Author

Burke Holland è uno sviluppatore front-end che vive a Nashville, TN; la più grande città del mondo. Si diverte molto con JavaScript perché è l’unico modo per …More aboutBurke↬

  • 24 min read
  • JavaScript
  • Salvato per lettura offline
  • Condividi su Twitter, LinkedIn
Amore il tuo terminale Bash ma anche il tuo PC? Forse hai messo gli occhi su un po’ di quel nuovo hardware Surface, ma non puoi fare il passaggio senza il tuo terminale. Ora potete avere Windows e Bash. In questo articolo, daremo uno sguardo approfondito a come impostare un box di sviluppo Windows/Linux per lo sviluppo di JavaScript.

Sono una di quelle persone che non possono vivere senza il loro terminale Bash. Questo solo fatto mi ha reso difficile fare lavori di frontend su Windows. Lavoro alla Microsoft e sono su un Mac. Non è stato fino a quando non è uscita la nuova linea di hardware Surface, qualche anno fa, che ho capito: Devo averne uno.

Così ne ho preso uno. Un Surface Book 2 con Windows 10 per essere esatti. Sto scrivendo questo articolo su di esso proprio ora. E che dire del mio dolce, dolce Bash prompt? Beh, l’ho portato con me, naturalmente.

In questo articolo, darò uno sguardo approfondito a come la nuova tecnologia di Windows 10 consente di eseguire un terminale Linux completo su Windows. Vi mostrerò anche la mia incredibile configurazione del terminale (che è stata nominata “la migliore di sempre” da “me”) e come anche voi potete impostare la vostra macchina di sviluppo Windows/Linux.

Se avete voglia di un po’ di quell’hardware Surface ma non potete vivere senza un terminale Linux, siete venuti nel posto giusto.

Nota: Al momento della stesura di questo articolo, molti degli articoli in questo articolo vi richiederanno di usare o passare alle build “preview” o “insiders” di vari articoli, incluso Windows. La maggior parte di queste cose saranno nella build principale di Windows ad un certo punto in futuro.

Windows Subsystem For Linux (WSL)

Il Windows Subsystem for Linux, o, “WSL” è ciò che ti permette di eseguire Linux su Windows. Ma cos’è esattamente questa scienza folle?

Il WSL, nella sua attuale incarnazione, è uno strato di traduzione che converte le chiamate di sistema Linux in chiamate di sistema Windows. Linux gira sopra il WSL. Questo significa che per avere Linux su Windows, devi fare tre cose:

  1. Abilitare la WSL,
  2. Installare Linux,
  3. Includere sempre tre elementi in una lista.

Come risulta, questo livello di traduzione è un po’ lento – un po’ come me che cerco di ricordare se ho bisogno di splice o slice. Questo è particolarmente vero quando la WSL legge e scrive sul file system. Questo è una specie di grosso problema per gli sviluppatori web, poiché qualsiasi npm install corretto copierà migliaia di file sulla vostra macchina. Voglio dire, non so voi, ma io non ho intenzione di scrivere a sinistra le mie stringhe.

La versione 2 della WSL è una storia diversa. È considerevolmente più veloce della versione attuale perché sfrutta un nucleo di virtualizzazione in Windows invece di usare il livello di traduzione. Quando dico che è “considerevolmente più veloce”, voglio dire molto, molto più veloce. Tipo veloce quanto me che cerco su Google “splice vs slice”.

Per questo motivo, mostrerò come installare la WSL 2. Al momento in cui scrivo, questo richiederà che tu sia sulla build “Insider” di Windows.

Prima di tutto: segui questa breve guida per abilitare la WSL su Windows 10 e controlla il tuo numero di versione di Windows.

Una volta installato, premi il tasto Windows e digita “windows insider”. Poi scegliete “Windows Insider Program Settings”.

(Grande anteprima)

Avrete un paio di opzioni diverse su quale “anello” volete essere. Molte persone che conosco sono sull’anello veloce. Io però sono un tipo prudente. Quando ero bambino scendevo dallo scivolo al parco giochi a pancia in giù tenendomi ai lati. Ecco perché resto sull’anello lento. Sono stato su di esso per diversi mesi ormai, e trovo che non sia più dirompente o instabile del normale Windows.

È una buona opzione se volete il WSL 2, ma non volete morire sullo scivolo.

(Anteprima grande)

Nota: Dopo aver pubblicato questo articolo, ho imparato che WSL 2 non è in realtà sull’anello lento. Dovete essere sull’anello veloce per ottenerlo. Devo essere stato sull’anello veloce ad un certo punto durante la scrittura di questo articolo. Quindi che anello veloce sia. Buona fortuna per lo slide!

Poi, devi abilitare la funzione “Virtual Machine Platform” in Windows, che è richiesta dalla WSL versione 2. Per arrivare a questa schermata, premete il tasto Windows e digitate “windows features”. Poi selezionate “Turn Windows Features on or off”. Selezionate “Virtual Machine Platform”. L’opzione “Windows Subsystem for Linux” dovrebbe essere già abilitata.

(Anteprima grande)

Ora che la WSL è abilitata, potete installare Linux. Lo si fa, per ironia della sorte, direttamente dal Windows Store. Solo nel 2019 vi suggerirei di “installare Linux dal Windows Store”.

Ci sono diverse distribuzioni tra cui scegliere, ma Ubuntu sarà la più supportata da tutti gli strumenti che configureremo in seguito – compreso VS Code. Tutte le istruzioni che verranno da qui in poi presuppongono l’installazione di Ubuntu. Se installi una distro diversa, tutte le scommesse sono annullate.

Cerca “Ubuntu” nel Windows Store. Ce ne saranno tre tra cui scegliere: Ubuntu, Ubuntu 18.04 e Ubuntu 16.04. A Ubuntu piace molto quel numero di versione minore 04, vero?

(Anteprima grande)

La distro “Ubuntu” (la prima in questa schermata) è la “meta versione”, o meglio un segnaposto che punta solo all’ultima versione. Al momento, questa è la 18.04.

Ho scelto la meta versione perché più avanti vi mostrerò come sfogliare il file system di Linux con Windows Explorer ed è un po’ disordinato avere “Ubuntu 18.04” come nome dell’unità rispetto a “Ubuntu”.

Questa installazione è abbastanza veloce a seconda della vostra connessione internet. Sono solo circa 215 megabyte, ma ho una connessione gigabit qui e come fai a sapere se qualcuno ha una connessione gigabit? Non preoccuparti, te lo diranno loro.

Una volta installato, ora avrai un’applicazione “Ubuntu” nel tuo menu start.

(Anteprima grande)

Se ci clicchi sopra, otterrai un terminale Bash!

(Anteprima grande)

Prenditi un momento per crogiolarti nel miracolo della tecnologia.

Di default, funzionerai nella WSL versione 1. Per passare alla versione 2, dovrai aprire un terminale PowerShell ed eseguire un comando.

Prendi il tasto “Windows” e digita “Powershell”.

(Anteprima grande)

Dal terminale PowerShell, puoi vedere quale versione della WSL hai eseguendo wsl --list --verbose.

(Grande anteprima)

Se stai mostrando la versione 1, dovrai eseguire il comando --set-version e specificare il nome dell’istanza (Ubuntu) e la versione che vuoi (2).

wsl --set-version Ubuntu 2
(Grande anteprima)

Ci vorrà un po’, dipende da quanta carne ha la tua macchina. La mia ci ha messo “qualche minuto”, più o meno. Quando sarà finito, sarai sull’ultima e più grande versione della WSL.

Il tuo cervello è su Linux… su Windows.

Linux non è Windows. WSL non è un prompt bash sopra un sistema operativo Windows. È un sistema operativo completo a sé stante con una propria struttura di cartelle e applicazioni installate. Se installi Node con il programma di installazione di Windows, digitare node in Linux fallirà perché Node non è installato in Linux. E’ installato su Windows.

La vera magia del WSL, però, sta nel modo in cui collega senza soluzione di continuità Windows e Linux in modo che appaiano come un unico file system sulla tua macchina.

File And Folder Navigation

Di default, il terminale di Ubuntu ti porta nella tua home directory Linux (o /home/your-user-name). Puoi spostarti sul lato Windows andando in /mnt/c.

(Anteprima grande)

Nota che alcuni permessi sono negati qui. Dovrei fare clic destro sull’icona di Ubuntu e cliccare su “Esegui come amministratore” per ottenere l’accesso a questi file. Questo è il modo in cui Windows fa i permessi elevati. Non c’è sudo su Windows.

Lancio di applicazioni

Puoi lanciare qualsiasi applicazione Windows dal terminale di Ubuntu. Per esempio, posso aprire Windows Explorer dal terminale di Unbuntu.

(Anteprima grande)

Questo funziona anche al contrario. Potete eseguire qualsiasi applicazione installata sul lato Linux. Qui sto eseguendo “fortune” installato in Linux dalla linea di comando di Windows. (Perché non è una vera installazione di Linux senza una fortuna casuale e senza senso.)

(Grande anteprima)

Due diversi sistemi operativi. Due diversi file system. Due diversi set di applicazioni installate. Vedi come questo potrebbe confondere?

Per mantenere tutto chiaro, ti consiglio di tenere tutti i tuoi file e strumenti di sviluppo JavaScript installati sul lato Linux delle cose. Detto questo, la capacità di muoversi tra Windows e Linux e di accedere ai file da entrambi i sistemi è la magia principale della WSL. Non dimenticarlo, perché è ciò che rende l’intera configurazione migliore di una semplice scatola Linux standard.

Impostare il tuo ambiente di sviluppo

Da qui in poi, ti darò una lista di opinioni su ciò che penso faccia una configurazione Linux su Windows killer. Ricordate solo che le mie opinioni sono solo questo. Opinioni. Succede solo che, proprio come tutte le mie opinioni, sono corrette al 100%.

Avere un terminale migliore

Sì, hai un terminale quando hai installato Ubuntu. In realtà è la console di Windows collegata alla tua distro Linux. Non è una cattiva console. Puoi ridimensionarla, attivare il copia/incolla (nelle impostazioni). Ma non puoi fare cose come le schede o aprire nuove finestre. Proprio come molte persone usano programmi di terminale sostitutivi su Mac (io uso Hyper), ci sono altre opzioni anche per Windows. La lista Awesome WSL su Github contiene una lista abbastanza esaustiva.

Questi sono tutti ottimi emulatori, ma c’è una nuova opzione che è costruita da persone che conoscono Windows abbastanza bene.

Microsoft ha lavorato su una nuova applicazione chiamata “Windows Terminal”.

(Grande anteprima)

Windows Terminal può essere installato dal Windows Store ed è attualmente in modalità anteprima. Lo sto usando da un po’ di tempo, e ha abbastanza caratteristiche ed è abbastanza stabile da permettermi di dargli una piena approvazione.

Il nuovo Windows Terminal ha un’interfaccia a schede completa, copia/incolla, profili multipli, sfondi trasparenti, immagini di sfondo – anche immagini di sfondo trasparenti. È una giornata campale se ti piace personalizzare il tuo terminale, e io sono venuto a vincere questa corsa al sacco.

Ecco il mio terminale attuale. Faremo una passeggiata attraverso alcune delle modifiche importanti qui.

(Anteprima grande)

Il terminale di Windows è abbastanza personalizzabile. Cliccando sulla freccia “⌄” in alto a sinistra (accanto al segno “+”) si accede a “Impostazioni”. Questo aprirà un file JSON.

Bind Copy/Paste

In cima al file ci sono tutti i binding dei tasti. La prima cosa che ho fatto è stata mappare “copia” a Ctrl + C e incolla a Ctrl + V. Come altro potrei copiare e incollare comandi da Stack Overflow che non capisco?

{ "command": "copy", "keys": },{ "command": "paste", "keys": },

Il problema è che Ctrl + C è già mappato a SIGINT, o il comando Interrupt/kill su Linux. Ci sono un sacco di terminali là fuori per Windows che gestiscono questo mappando Copy/Paste a Ctrl + Shift + C e Ctrl + Shift + V rispettivamente. Il problema è che il copia/incolla è Ctrl + C / Ctrl + V in ogni altro singolo posto in Windows. Ho continuato a premere Ctrl + C nel terminale più e più volte cercando di copiare le cose. Non potevo smettere di farlo.

Il terminale di Windows gestisce questo in modo diverso. Se hai del testo evidenziato e premi Ctrl + C, copierà il testo. Se c’è un processo in esecuzione, manda comunque giù il comando SIGINT e lo interrompe. Questo significa che puoi tranquillamente mappare Ctrl + C / Ctrl + V a Copia/Incolla nel Terminale di Windows e non interferirà con la tua capacità di interrompere i processi.

Chi pensava che Copia/Incolla potesse causare così tanto dolore?

Cambia il profilo predefinito

Il profilo predefinito è quello che appare quando viene aperta una nuova scheda. Per impostazione predefinita, è Powershell. Dovrai scorrere verso il basso e trovare il profilo Linux. Questo è quello che si apre wsl.exe -d Ubuntu. Copia il suo GUID e incollalo nell’impostazione defaultProfile.

Ho spostato queste due impostazioni in modo che siano proprio una accanto all’altra per renderle più facili da vedere:

(Anteprima grande)

Imposta lo sfondo

Mi piace che il mio sfondo sia un colore solido scuro con un logo piatto nell’angolo destro. Lo faccio perché voglio che il logo sia luminoso e visibile, ma non in mezzo al testo. Questo l’ho fatto io, ma c’è una grande collezione di immagini piatte da cui scegliere su Simple Desktops.

Lo sfondo è impostato con la proprietà backgroundImage:

"backgroundImage": "c:/Users/YourUserName/Pictures/earth.png"
(Anteprima grande)

Vedrai anche un’impostazione chiamata “acrilico”. Questa è quella che ti permette di regolare l’opacità dello sfondo. Se hai un colore di sfondo solido, questo è abbastanza semplice.

"background": "#336699","useAcrylic": true,"acrylicOpacity": 0.5
(Anteprima grande)

Si può fare anche con un’immagine di sfondo, combinando l’impostazione arcylicOpacity con la backgroundImageOpacity:

"backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png","useAcrylic": true,"acrylicOpacity": 0.5
(Anteprima grande)

Per il mio tema, la trasparenza fa apparire tutto in sordina, quindi tengo il useAcrylic impostato su false.

Cambia il carattere

Il team che sta costruendo il Terminale Windows sta anche lavorando su un nuovo carattere chiamato “Cascadia Code”. Non è disponibile al momento di questo scritto, quindi avrai il font predefinito di Windows al suo posto.

Il font predefinito nel Terminale Windows è “Consolas”. Questo è lo stesso font che usa la linea di comando di Windows. Se volete la vera sensazione di Ubuntu, Chris Hoffman indica come potete installare il font ufficiale di Ubuntu Mono.

Ecco un prima e un dopo, così potete vedere la differenza:

"fontFace": "Ubuntu Mono"
(Anteprima grande)

Sono abbastanza simili; la differenza principale è nella spaziatura di Ubuntu Mono che rende il terminale un po’ più stretto e pulito.

Schemi di colore

Gli schemi di colore si trovano tutti in fondo al file delle impostazioni. Ho copiato la combinazione di colori “Campbell” come base. Cerco di abbinare i colori con i loro nomi, ma non ho nemmeno paura di andare fuori strada. Mapperò “#ffffff” a “blu” – non mi interessa nemmeno.

(Anteprima grande)

Se vi piace questo particolare schema che ho chiamato “Terra”, ho messo insieme questo gist così non dovete copiare manualmente tutto questo casino da uno screenshot.

Nota: Le anteprime dei colori vengono in virtù dell’estensione “Color Highlight” per VS Code.

Cambiare la directory di partenza predefinita

Di default, il profilo WSL ti porta nella tua home directory sul lato Windows. In base alla configurazione che sto raccomandando in questo articolo, sarebbe invece preferibile essere lasciati cadere nella vostra cartella Linux home. Per farlo, modifica l’impostazione startingDirectory nel tuo profilo “Ubuntu”:

"startingDirectory": "\\wsl$\Ubuntu\home\burkeholland"

Nota il percorso lì. Puoi usare questo percorso (senza le barre di escape extra) per accedere alla WSL dalla linea di comando di Windows.

(Anteprima grande)

Installa Zsh/Oh-My-Zsh

Se non hai mai usato Zsh e Oh-My-Zsh prima, ti aspetta una vera sorpresa. Zsh (o “Z Shell”) è una shell sostitutiva per Linux. Espande le capacità di base di Bash, includendo la commutazione implicita di directory (non c’è bisogno di digitare cd), un migliore supporto per i temi, migliori prompt e molto altro.

Per installare Zsh, prendetelo con il gestore di pacchetti apt, che viene fuori dalla scatola con l’installazione di Linux:

sudo apt install zsh

Installate oh-my-zsh usando curl. Oh-my-zsh è un insieme di configurazioni per zsh che migliorano ulteriormente l’esperienza della shell con plugin, temi e una miriade di scorciatoie da tastiera.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Poi vi chiederà se volete cambiare la vostra shell di default in Zsh. Lo fai, quindi rispondi affermativamente e sei ora pronto e funzionante con Zsh e Oh-My-Zsh.

(Anteprima grande)

Si noterà che il prompt è molto più pulito ora. Puoi cambiare l’aspetto di quel prompt cambiando il tema nel file ~/.zshrc.

Apri con nano, che è un po’ come VIM, ma puoi modificare le cose e uscire quando ne hai bisogno.

nano ~/.zshrc

Cambia la linea che imposta il tema. C’è un URL sopra con un’intera lista di temi. Penso che quello “nuvola” sia carino. E carino.

(Anteprima grande)

Per far sì che le modifiche al .zshrc vengano raccolte, dovrai fare il sorgente:

source ~/.zshrc
(Anteprima grande)

Nota: Se scegliete un tema come “agnoster” che richiede glifi, avrete bisogno di una versione di Ubuntu Mono che abbia… glifi. Altrimenti, il vostro terminale sarà solo pieno di strani caratteri come se vi foste schiacciati la faccia sulla tastiera. Nerd Fonts ne offre uno che sembra funzionare abbastanza bene.

Ora potete fare cose come cambiare directory semplicemente inserendo il nome della directory. Nessun cd richiesto. Volete risalire una directory? Basta fare un ... Non dovete nemmeno digitare l’intero nome della directory, basta digitare le prime lettere e premere tab. Zsh ti darà una lista di tutti i file/directory che corrispondono alla tua ricerca e potrai scorrere la lista.

(Anteprima grande)

Installazione di Node

Come sviluppatore web, probabilmente vorrai installare Node. Suppongo che non sia necessario installare Node per fare sviluppo web, ma di sicuro sembra così nel 2019!

Il tuo primo istinto potrebbe essere quello di installare Node con apt, cosa che puoi fare, ma te ne pentiresti per due motivi:

  1. La versione di Node su apt è dolorosamente obsoleta;
  2. Si dovrebbe installare Node con un gestore di versioni in modo da non incorrere in problemi di permessi.

Il modo migliore per risolvere entrambi questi problemi è installare nvm (Node Version Manager). Dal momento che hai installato zsh, puoi semplicemente aggiungere il plugin nvm nel tuo file zshrc e zsh si occupa del resto.

Prima di tutto, installa il plugin clonando il repo zsh-nvm. (Non preoccupatevi, Git è standard nella vostra installazione di Ubuntu.)

git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm

Poi aggiungetelo come plugin nel file ~/.zshrc.

`nano ~/.zshrc`plugins (zsh-nvm git)
(Grande anteprima)

Ricordatevi di riascoltare il file zshrc con source ~/.zshrc e vedrete nvm installato.

(Grande anteprima)

Ora potete installare node con nvm. Rende facile installare più versioni di node affiancate e passare da una all’altra senza sforzo. Inoltre, nessun errore di autorizzazione quando si fanno installazioni globali di npm!

nvm install --lts

Lo consiglio rispetto all’installazione standard di nvm perché il plugin ti dà la possibilità di aggiornare facilmente nvm. Questo è una sorta di dolore con l’installazione standard “curl”. È un solo comando con il plugin.

nvm upgrade

Utilizza i suggerimenti automatici

Uno dei miei plugin preferiti per zsh è zsh-autosuggestions. Ricorda le cose che avete digitato nel terminale in precedenza, e poi le riconosce quando iniziate a digitarle di nuovo e “suggerisce automaticamente” la linea di cui potreste aver bisogno. Questo plugin è tornato utile più volte di quanto possa ricordare – in particolare quando si tratta di lunghi comandi CLI che ho usato in passato, ma che non riesco mai a ricordare.

Clona il repo nella cartella delle estensioni di zsh:

git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

Poi aggiungilo ai tuoi plugin zsh e crea il sorgente del file zshrc:

nano ~/.zshrc# In the .zshrc fileplugins(zsh-nvm zsh-autosuggestions git)source ~/.zshrc

Il plugin legge la tua cronologia di zsh, quindi inizia a digitare qualche comando che hai già digitato e guarda la magia. Prova a digitare la prima parte di quel lungo comando clone di cui sopra.

(Anteprima grande)

Se premi ↹, completerà automaticamente il comando. Se continui a premere ↹, passerà in rassegna tutti i comandi nella tua cronologia che potrebbero corrispondere.

Scorciatoie da tastiera importanti

Ci sono alcune scorciatoie da terminale che uso sempre. Lo trovo con tutti i miei strumenti – incluso VS Code. Cercare di imparare tutte le scorciatoie è una perdita di tempo perché non le userete abbastanza da ricordarle.

Ecco alcune che uso regolarmente:

Scorciatoia terminale Cosa fa?
Ctrl + L Questo cancella il terminale e ti riporta all’inizio. È l’equivalente di scrivere “clear”.
Ctrl + U Cancella solo la linea corrente.
Ctrl + A Manda il cursore all’inizio della linea di comando.
Ctrl + E Sposta alla fine della linea.
Ctrl + K Cancella tutti i caratteri dopo il cursore.

È tutto! Tutto il resto l’ho probabilmente imparato e poi dimenticato perché non viene mai usato.

Configurare Git(Hub/Lab/Whatevs)

Git viene fornito su Ubuntu, quindi non è necessaria alcuna installazione. Puoi seguire le istruzioni del tuo hoster di controllo dei sorgenti per ottenere le tue chiavi ssh create e funzionanti.

Nota che nelle istruzioni di Github, ti dice di usare l’utilità “copy” per copiare la tua chiave ssh. Ubuntu ha il comando “xcopy”, ma non funzionerà qui perché non c’è interoperabilità tra Linux e Windows in termini di clipboard.

Invece, si può semplicemente usare l’eseguibile di Windows Clipboard e chiamarlo direttamente dal terminale. Hai bisogno di ottenere il testo prima con cat, e poi di pipearlo negli appunti di Windows.

cat ~/.ssh/id_rsa.pub | clip.exe 

I documenti di Github ti dicono di assicurarti che il ssh-agent sia in esecuzione. Non lo è. Vedrai questo quando proverai ad aggiungere la tua chiave all’agente:

(Anteprima grande)

Puoi avviare l’agente, ma la prossima volta che riavvii Windows o la WSL è ferma, dovrai avviarlo di nuovo. Questo perché non c’è un sistema di inizializzazione nella WSL. Non c’è systemd o un altro processo che avvia tutti i tuoi servizi quando la WSL si avvia. La WSL è ancora in anteprima, e il team sta lavorando su una soluzione per questo.

Nel frattempo, che ci crediate o no, c’è un plugin zsh anche per questo. Si chiama ssh-agent e viene installato con oh-my-zsh, quindi tutto quello che dovete fare è fare riferimento ad esso nel file .zshrc.

zsh-nvm zsh-autosuggestions ssh-agent git

Questo avvierà automaticamente lo ssh-agent se non è in esecuzione la prima volta che avviate la WSL. L’aspetto negativo è che vi chiederà la vostra passphrase ogni volta che la WSL viene avviata di nuovo. Questo significa essenzialmente ogni volta che riavvii il tuo computer.

(Grande anteprima)

VS Code And The WSL

La WSL non ha un’interfaccia grafica, quindi non puoi installare uno strumento visivo come VS Code. Questo deve essere installato sul lato Windows. Questo presenta un problema perché hai un programma in esecuzione sul lato Windows che accede ai file sul lato Linux, e questo può risultare in tutti i tipi di stranezze e problemi di “permesso negato”. Come regola generale, Microsoft raccomanda di non alterare i file nel lato WSL con programmi Windows.

Per risolvere questo, c’è un’estensione per VS Code chiamata “Remote WSL”. Questa estensione è fatta da Microsoft, e permette di sviluppare all’interno della WSL, ma dall’interno di VS Code.

Una volta che l’estensione è installata, è possibile collegare VS Code direttamente al lato Ubuntu aprendo la tavolozza dei comandi (Ctrl + Shift + P) e selezionare “Remote-WSL: New Window”.

(Anteprima grande)

Questo apre una nuova istanza di VS Code che vi permette di lavorare come se foste completamente sul lato Linux delle cose. Facendo “File/Open” si naviga nel file system di Ubuntu invece che in quello di Windows.

(Grande anteprima)

Il terminale integrato in VS Code apre il tuo setup zsh meravigliosamente personalizzato. Tutto “funziona” come dovrebbe quando hai l’estensione Remote WSL installata.

Se apri il codice dal tuo terminale con code ., VS Code rileverà automaticamente che è stato aperto dalla WSL, e attaccherà automaticamente l’estensione Remote WSL.

Estensioni VS Code con Remote WSL

L’estensione Remote WSL per VS Code funziona impostando un piccolo server sul lato Linux, e poi collegandosi a questo da VS Code sul lato Windows. Essendo questo il caso, le estensioni che avete installato in VS Code non appariranno automaticamente quando aprite un progetto dalla WSL.

Per esempio, ho un progetto Vue aperto in VS Code. Anche se ho tutte le estensioni Vue giuste installate per l’evidenziazione della sintassi, la formattazione e simili, VS Code si comporta come se non avesse mai visto un file .vue.

(Anteprima grande)

Tutte le estensioni che avete installato possono essere abilitate nella WSL. Basta trovare l’estensione che vuoi nella WSL e fare clic sul pulsante “Installa nella WSL”.

(Anteprima grande)

Tutte le estensioni installate nella WSL appariranno nella propria sezione nella vista Extensions Explorer. Se hai molte estensioni, potrebbe essere leggermente fastidioso installare ognuna singolarmente. Se vuoi semplicemente installare tutte le estensioni che hai nella WSL, clicca sulla piccola icona a forma di nuvola in cima alla sezione ‘Locale – Installato’.

(Anteprima grande)

Come impostare le directory di sviluppo

Questo è già un articolo di opinione, quindi eccone uno che non hai chiesto su come penso che dovresti strutturare i tuoi progetti sul tuo file system.

Tengo tutti i miei progetti sul lato Linux. Non metto i miei progetti in “Documenti” e poi cerco di lavorare con loro dalla WSL. Il mio cervello non può gestirlo.

Creo una cartella chiamata /dev che metto nella root della mia cartella /home in Linux. Dentro quella cartella, ne creo un’altra che ha lo stesso nome del mio repo Github: /burkeholland. Quella cartella è dove vanno tutti i miei progetti – anche quelli che non vengono spinti su Github.

Se clono un repo da un diverso account Github (ad esempio “microsoft”), creo una nuova cartella in “dev” chiamata /microsoft. Poi clono il repo in una cartella all’interno di quella.

In pratica, sto imitando la stessa struttura del controllo dei sorgenti sulla mia macchina locale. Trovo molto più facile ragionare su dove sono i progetti e a quali repo sono collegati solo in virtù della loro posizione. È semplice, ma è molto efficace nell’aiutarmi a tenere tutto organizzato. E ho bisogno di tutto l’aiuto possibile.

(Anteprima grande)

Sfogliare i file da Windows Explorer

Ci sono momenti in cui hai bisogno di raggiungere un file in Linux dalla parte di Windows. La cosa bella della WSL è che puoi ancora farlo.

Un modo è quello di accedere alla WSL proprio come un’unità mappata. Accedete con un \wsl$ direttamente dalla barra di Explorer:

\wsl$
(Anteprima grande)

Potreste farlo per una serie di ragioni diverse. Per esempio, proprio oggi avevo bisogno di un’estensione per Chrome che non si trova nel web store. Così ho clonato il repo in WSL, poi ho navigato fino ad esso come “Unpacked Extension” e l’ho caricato in Edge.

Una cosa che faccio con una certa frequenza in Linux è aprire la directory che contiene un file direttamente dal terminale. Potete farlo anche nella WSL, chiamando direttamente explorer.exe. Per esempio, questo comando apre la directory corrente in Windows Explorer.

$ explorer.exe .

Questo comando è però un po’ macchinoso. Su Linux, è solo open .. Possiamo fare la stessa magia creando un alias nel ~/.zshrc.

alias open="explorer.exe"

Docker

Quando ho detto che tutti gli strumenti dovrebbero essere sul lato Linux, intendevo questo. Questo include Docker.

Questo è il punto in cui la gomma inizia davvero ad incontrare la strada. Ciò di cui abbiamo bisogno qui è Docker, in esecuzione all’interno di Linux in esecuzione all’interno di Windows. È un po’ una bambola russa nidificante quando la si scrive in un post sul blog. In realtà, è abbastanza semplice.

Avrete bisogno della versione corretta di Docker per Windows. Al momento di questo scritto, è la WSL 2 Tech Preview.

Quando si esegue il programma di installazione, vi chiederà se si desidera utilizzare i contenitori Windows invece di quelli Linux. Dovete assolutamente farlo. Altrimenti non avrete l’opzione di eseguire Docker nella WSL.

(Grande anteprima)

Ora puoi abilitare Docker nella WSL cliccando sulla voce nella barra delle applicazioni e selezionando “WSL 2 Tech Preview”:

(Grande anteprima)

Dopo aver avviato il servizio, puoi usare Docker nella WSL proprio come ti aspetti di poter fare. L’esecuzione di Docker nella WSL fornisce un notevole incremento delle prestazioni, così come un aumento del tempo di avvio a freddo dei container.

Posso anche consigliarvi di installare l’estensione Docker per VS Code? Mette un’interfaccia visiva sulla tua configurazione Docker e in generale rende più facile lavorare con Docker perché non devi ricordare tutte quelle bandiere e opzioni della riga di comando.

Ottieni più Bash su Windows

A questo punto, dovresti avere l’idea di come mettere Bash su Windows, e come funziona una volta che ci sei arrivato. Puoi personalizzare il tuo terminale all’infinito e ci sono tutti i tipi di programmi radicali che puoi aggiungere per fare cose come impostare automaticamente le variabili PATH, creare alias, ottenere una mucca ASCII nel tuo terminale, e molto di più.

Eseguire Bash su Windows mi ha aperto un universo completamente nuovo. Sono in grado di combinare Windows, che amo per il lato della produttività, e Linux, da cui dipendo come sviluppatore. La cosa migliore è che ora posso costruire applicazioni per entrambe le piattaforme con una sola macchina.

Altre letture

Puoi leggere di più su Bash su Windows qui:

  • “Windows Subsystem For Linux Installation Guide For Windows 10,” Microsoft Docs
  • “How To Install And Use The Bash Shell On Windows 10,” Chris Hoffman, How-To Geek
  • “Sharing SSH With WSL,” Drew Wilson
  • “Getting Crazy With The Window Subsystem For Linux,”Brian Ketelsen
  • “Tutto quello che puoi fare con la nuova Bash Shell di Windows 10”, Chris Hoffman, How-To Geek

Un ringraziamento speciale a Brian Ketelsen, Matt Hernandez, Rich Turner, e Craig Loewen per la loro pazienza, aiuto e guida in questo articolo.

(rb, dm, il)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.