Flytning af din JavaScript-udvikling til Bash på Windows

  • 24 min læsning
  • JavaScript
  • Sparet til offline læsning
  • Del på Twitter, LinkedIn
Livs du af din Bash-terminal, men elsker du også din pc? Måske har du fået øjnene op for noget af det nye Surface-hardware, men kan ikke skifte uden din terminal. Nu kan du få Windows og Bash. I denne artikel ser vi nærmere på, hvordan du kan opsætte en Windows/Linux-udviklingsboks til JavaScript-udvikling.

Jeg er en af de mennesker, der ikke kan leve uden deres Bash-terminal. Alene dette faktum har gjort det svært for mig at lave frontend-arbejde på Windows. Jeg arbejder hos Microsoft, og jeg sidder på en Mac. Det var ikke før den nye Surface-hardwarelinje kom ud for et par år siden, at det gik op for mig: Jeg må have en af dem.

Så jeg fik en. En Surface Book 2, der kører Windows 10 for at være helt præcis. Jeg er ved at skrive denne artikel på den lige nu. Og hvad med min søde, søde Bash-prompt? Tja, den har jeg selvfølgelig taget med mig.

I denne artikel vil jeg se nærmere på, hvordan ny teknologi i Windows 10 gør det muligt at køre en fuld Linux-terminal på Windows. Jeg vil også vise dig min fantastiske terminalopsætning (som blev udnævnt til “den bedste nogensinde” af “mig”), og hvordan du også kan opsætte din helt egen Windows/Linux-udviklingsmaskine.

Hvis du har haft lyst til noget af den Surface-hardware, men ikke kan leve uden en Linux-terminal, er du kommet til det rette sted.

Bemærk: I skrivende stund kræver mange af punkterne i denne artikel, at du bruger eller skifter til “preview”- eller “insider”-builds af forskellige elementer, herunder Windows, eller at du skifter til dem. De fleste af disse ting vil være i den primære Windows-build på et tidspunkt i fremtiden.

Windows Subsystem For Linux (WSL)

Windows Subsystem for Linux, eller “WSL”, er det, der gør det muligt at køre Linux på Windows. Men hvad er egentlig denne vanvittige videnskab?

WSL er i sin nuværende udformning et oversættelseslag, der konverterer Linux-systemopkald til Windows-systemopkald. Linux kører oven på WSL. Det betyder, at for at få Linux på Windows skal du gøre tre ting:

  1. Aktiver WSL,
  2. Installer Linux,
  3. Inkluder altid tre ting på en liste.

Som det viser sig, er dette oversættelseslag en smule langsomt – lidt ligesom mig, der prøver at huske, om jeg skal bruge splice eller slice. Dette er især tilfældet, når WSL læser og skriver til filsystemet. Det er lidt af et stort problem for webudviklere, da enhver korrekt npm install vil kopiere tusindvis af filer til din maskine. Jeg mener, jeg ved ikke med dig, men jeg har ikke tænkt mig at venstre-padde mine egne strenge.

Version 2 af WSL er en anden historie. Den er betydeligt hurtigere end den nuværende version, fordi den udnytter en virtualiseringskerne i Windows i stedet for at bruge oversættelseslaget. Når jeg siger, at den er “betydeligt hurtigere”, mener jeg langt, langt hurtigere. Ligesom lige så hurtigt som at jeg googler “splice vs. slice”.

Derfor vil jeg vise, hvordan man installerer WSL 2. I skrivende stund vil det kræve, at du er på “Insider”-bygningen af Windows.

Første ting først: Følg denne korte vejledning for at aktivere WSL på Windows 10 og tjek dit Windows-versionnummer.

Når du har det installeret, skal du trykke på Windows-tasten og skrive “windows insider”. Vælg derefter “Windows Insider Program Settings”.

(Stor forhåndsvisning)

Du får et par forskellige muligheder for, hvilken “ring” du vil være på. Mange af de mennesker, jeg kender, er på den hurtige ring. Jeg er dog en forsigtig fyr. Da jeg var barn, gik jeg ned ad rutschebanen på legepladsen på maven og holdt mig fast i siderne. Det er derfor, jeg bliver på den langsomme ring. Jeg har været på den i flere måneder nu, og jeg synes ikke, at den er mere forstyrrende eller ustabil end almindelig Windows.

Det er en god mulighed, hvis du vil have WSL 2, men ikke vil dø på rutsjebanen.

(Stort preview)

Note: Efter offentliggørelsen af denne artikel har jeg erfaret, at WSL 2 faktisk ikke er på den langsomme ring. Du skal være på den hurtige ring for at få den. Jeg må have været på den hurtige ring på et tidspunkt i processen med at skrive denne artikel. Så det bliver den hurtige ring. Held og lykke på rutsjebanen!

Næst skal du aktivere funktionen “Virtual Machine Platform” i Windows, som er påkrævet af WSL version 2. For at komme til dette skærmbillede skal du trykke på Windows-tasten og skrive “windows features”. Vælg derefter “Slå Windows-funktioner til eller fra”. Vælg “Virtual Machine Platform”. Indstillingen “Windows Subsystem for Linux” bør allerede være aktiveret.

(Stor forhåndsvisning)

Nu, hvor WSL er aktiveret, kan du installere Linux. Det gør du ironisk nok direkte fra Windows Store. Kun i 2019 ville jeg foreslå, at du “installerer Linux fra Windows Store”.

Der er flere forskellige distributioner at vælge imellem, men Ubuntu vil være den mest understøttede på tværs af alle de værktøjer, vi skal konfigurere senere – herunder VS Code. Alle instruktioner, der kommer herfra og fremover med forudsætter en Ubuntu-installation. Hvis du installerer en anden distro, er alle indsatser ikke tilladt.

Søg efter “Ubuntu” i Windows Store. Der vil være tre at vælge imellem: Ubuntu, Ubuntu 18.04 og Ubuntu 16.04. Ubuntu kan virkelig godt lide det der 04 minor versionsnummer, ikke sandt?

(Stort preview)

Distroen “Ubuntu” (den første i dette skærmbillede) er “metaversionen”, eller rettere en pladsholder, der blot peger på den nyeste version. Lige nu er det 18.04.

Jeg valgte metaversionen, fordi jeg senere vil vise dig, hvordan du gennemser Linux-filsystemet med Windows Stifinder, og det er lidt rodet at have “Ubuntu 18.04” som drevnavn i forhold til bare “Ubuntu”.

Denne installation er ret hurtig, afhængigt af din internetforbindelse. Det er kun omkring 215 megabyte, men jeg er på en gigabit-forbindelse herovre, og hvordan ved du, om nogen er på en gigabit-forbindelse? Bare rolig, de fortæller dig det.

Når det er installeret, vil du nu have en “Ubuntu”-app i din startmenu.

(Stort preview)

Hvis du klikker på den, får du en Bash-terminal!

(Stor forhåndsvisning)

Tag et øjeblik til at nyde teknologiens mirakel.

Som standard kører du i WSL version 1. Hvis du vil opgradere til version 2, skal du åbne en PowerShell-terminal og køre en kommando.

Husk på “Windows”-tasten, og skriv “Powershell”.

(Stort eksempel)

Fra PowerShell-terminalen kan du se, hvilken version af WSL du har, ved at udføre wsl --list --verbose.

(Large preview)

Hvis du får vist version 1, skal du udføre kommandoen --set-version og angive navnet på instansen (Ubuntu) og den ønskede version (2).

wsl --set-version Ubuntu 2
(Large preview)

Dette vil tage lidt tid, afhængigt af hvor meget kød din maskine har. Min tog “nogle minutter” give or take. Når det er færdigt, vil du være på den nyeste og bedste version af WSL.

Den er din hjerne på Linux… på Windows.

Linux er ikke Windows. WSL er ikke en bash-prompt oven på et Windows-operativsystem. Det er et fuldt styresystem i sig selv med sin egen mappestruktur og installerede programmer. Hvis du installerer Node med Windows-installationsprogrammet, vil det mislykkes at skrive node i Linux, fordi Node ikke er installeret i Linux. Det er installeret i Windows.

Den sande magi i WSL ligger dog i den måde, hvorpå den sømløst forbinder Windows og Linux, så de fremstår som ét filsystem på din maskine.

Fil- og mappenavigation

Som standard taber Ubuntu-terminalen dig til din Linux-hjemmemmappe (eller /home/your-user-name). Du kan gå over på Windows-siden ved at gå til /mnt/c.

(Stort eksempel)

Bemærk, at nogle tilladelser er nægtet her. Jeg ville være nødt til at højreklikke på Ubuntu-ikonet og klikke på “Kør som administrator” for at få adgang til disse filer. Sådan gør Windows forhøjede tilladelser. Der er ingen sudo på Windows.

Lancering af programmer

Du kan starte ethvert Windows-program fra Ubuntu-terminalen. Jeg kan f.eks. åbne Windows Stifinder fra Ubuntu-terminalen.

(Stort eksempel)

Dette virker også omvendt. Du kan udføre ethvert program, der er installeret på Linux-siden. Her afvikler jeg “fortune” installeret i Linux fra Windows-kommandolinjen. (Fordi det ikke er en ordentlig Linux-installation uden tilfældige, meningsløse formuer.)

(Stort eksempel)

To forskellige styresystemer. To forskellige filsystemer. To forskellige sæt af installerede programmer. Kan du se, hvordan det kan blive forvirrende?

For at holde styr på det hele anbefaler jeg, at du holder alle dine JavaScript-udviklingsfiler og -værktøjer installeret på Linux-siden af tingene. Når det er sagt, er muligheden for at bevæge sig mellem Windows og Linux og få adgang til filer fra begge systemer kernen i WSL’s magi. Glem det ikke, for det er det, der gør hele denne opsætning bedre end bare en standard Linux-boks.

Indstilling af dit udviklingsmiljø

Fra og med her vil jeg give dig en liste over meningsskabende elementer til, hvad jeg mener, der gør en killer Linux on Windows-opsætning. Bare husk: mine meninger er bare det. Meninger. Det sker bare, at de ligesom alle mine meninger er 100% korrekte.

Få en bedre terminal

Ja, du fik en terminal, da du installerede Ubuntu. Det er faktisk Windows-konsollen, der er forbundet med din Linux-distro. Det er ikke en dårlig konsol. Du kan ændre størrelsen på den, slå copy/paste til (i indstillinger). Men du kan ikke gøre ting som f.eks. faner eller åbne nye vinduer. Ligesom mange mennesker bruger erstatningsterminalprogrammer på Mac (jeg bruger Hyper), er der også andre muligheder til Windows. Awesome WSL-listen på Github indeholder en ret udtømmende liste.

Disse er alle fine emulatorer, men der er en ny mulighed, som er bygget af folk, der kender Windows ret godt.

Microsoft har arbejdet på et nyt program kaldet “Windows Terminal”.

(Stort preview)

Windows Terminal kan installeres fra Windows Store og er i øjeblikket i preview-mode. Jeg har brugt det i et stykke tid nu, og det har nok funktioner og er stabilt nok til, at jeg kan give det fuld opbakning.

Den nye Windows Terminal har en fuld fane-grænseflade, kopier/indsæt, flere profiler, gennemsigtige baggrunde, baggrundsbilleder – endda gennemsigtige baggrundsbilleder. Det er en fryd og gammen, hvis du kan lide at tilpasse din terminal, og jeg kom til at vinde dette sækkevæddeløb.

Her er min nuværende terminal. Vi tager en tur gennem nogle af de vigtige tweaks her.

(Stort preview)

Windows-terminal er ganske tilpasningsdygtig. Hvis du klikker på “⌄”-pilen øverst til venstre (ved siden af “+”-tegnet), får du adgang til “Indstillinger”. Dette åbner en JSON-fil.

Bind Copy/Paste

Overst i filen er alle nøglebindinger. Det første, jeg gjorde, var at mappe “copy” til Ctrl + C og paste til Ctrl + V. Hvordan skal jeg ellers kopiere og indsætte kommandoer fra Stack Overflow, som jeg ikke forstår?

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

Problemet er, at Ctrl + C allerede er mappet til SIGINT, eller kommandoen Interrupt/kill på Linux. Der er en masse terminaler derude til Windows, der håndterer dette ved at mappe Copy/Paste til henholdsvis Ctrl + Shift + C og Ctrl + Shift + V. Problemet er, at copy/paste er Ctrl + C / Ctrl + V alle andre steder i Windows. Jeg blev bare ved med at trykke på Ctrl + C i terminalen igen og igen for at forsøge at kopiere ting. Jeg kunne ikke holde op med at gøre det.

Windows-terminalen håndterer dette anderledes. Hvis du har tekst markeret, og du trykker på Ctrl + C, kopierer den teksten. Hvis der er en kørende proces, sender den stadig SIGINT-kommandoen ned og afbryder den. Det betyder, at du roligt kan mappe Ctrl + C / Ctrl + V til Copy/Paste i Windows-terminalen, og det vil ikke forstyrre din evne til at afbryde processer.

Hvem troede, at Copy/Paste kunne forårsage så meget hjertesorg?

Ændre standardprofilen

Den standardprofil er det, der kommer frem, når en ny fane åbnes. Som standard er det Powershell. Du skal rulle ned og finde Linux-profilen. Det er den, der åbnes wsl.exe -d Ubuntu. Kopier dens GUID, og indsæt den i indstillingen defaultProfile.

Jeg har flyttet disse to indstillinger, så de er lige ved siden af hinanden for at gøre det lettere at se:

(Stort preview)

Sæt baggrunden

Jeg kan godt lide, at min baggrund er en mørk ensfarvet farve med et fladt logo i højre hjørne. Jeg gør dette, fordi jeg ønsker, at logoet skal være lyst og synligt, men ikke i vejen for teksten. Denne har jeg selv lavet, men der er en stor samling af flade billeder at vælge imellem hos Simple Desktops.

Baggrunden er indstillet med backgroundImage-egenskaben:

"backgroundImage": "c:/Users/YourUserName/Pictures/earth.png"
(Stor forhåndsvisning)

Du vil også bemærke en indstilling kaldet “acrylic”. Det er den, der gør det muligt for dig at justere opaciteten af baggrunden. Hvis du har en ensfarvet baggrundsfarve, er dette ret ligetil.

"background": "#336699","useAcrylic": true,"acrylicOpacity": 0.5

(Stort eksempel)

Du kan også gøre dette med et baggrundsbillede ved at kombinere indstillingen arcylicOpacity med backgroundImageOpacity:

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

For mit tema får gennemsigtighed alt til at se dæmpet ud, så jeg holder useAcrylic indstillet til false.

Ændre skrifttype

Det team, der bygger Windows Terminal, arbejder også på en ny skrifttype kaldet “Cascadia Code”. Den er ikke tilgængelig i skrivende stund, så du får Windows-standardskrifttypen i stedet.

Standardskrifttypen i Windows-terminalen er “Consolas”. Det er den samme skrifttype, som Windows-kommandolinjen bruger. Hvis du vil have den ægte Ubuntu-fornemmelse, viser Chris Hoffman, hvordan du kan installere den officielle Ubuntu Mono-skrifttype.

Her er et før- og efterbillede, så du kan se forskellen:

"fontFace": "Ubuntu Mono"
(Stort eksempel)

De ligner hinanden ret meget; den største forskel er mellemrummene i Ubuntu Mono, som gør terminalen en smule strammere og renere.

Farveskemaer

Farveskemaerne er alle placeret nederst i indstillingsfilen. Jeg kopierede “Campbell”-farveskemaet som en basislinje. Jeg forsøger at matche farverne med deres navne, men jeg er heller ikke bange for at gå på vildspor. Jeg mapper “#ffffffffff” til “blå” – jeg er ligeglad.

(Stort preview)

Hvis du kan lide dette særlige skema, som jeg har kaldt “Earth”, har jeg sammensat denne gist, så du ikke behøver at kopiere alt dette rod manuelt ud fra et skærmbillede.

Bemærk: Farveforhåndsvisningerne kommer i kraft af udvidelsen “Color Highlight” til VS Code.

Ændre standardstartmappen

Som standard sætter WSL-profilen dig ind i din hjemmemappe på Windows-siden. Baseret på den opsætning, som jeg anbefaler i denne artikel, ville det være at foretrække at blive droppet i din Linux-mappe home i stedet. For at gøre det skal du ændre startingDirectory-indstillingen i din “Ubuntu”-profil:

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

Notér stien der. Du kan bruge denne sti (minus de ekstra escape-slashes) til at få adgang til WSL fra Windows-kommandolinjen.

(Stor forhåndsvisning)

Installer Zsh/Oh-My-Zsh

Hvis du aldrig har brugt Zsh og Oh-My-Zsh før, så er du på vej til en rigtig godbid. Zsh (eller “Z Shell”) er en erstatningsskal til Linux. Den udvider de grundlæggende funktioner i Bash, herunder implicit mappeskift (du behøver ikke at skrive cd), bedre understøttelse af temaer, bedre prompts og meget mere.

For at installere Zsh skal du hente den med pakkehåndteringen apt, som følger med din Linux-installation:

sudo apt install zsh

Installer oh-my-zsh ved hjælp af curl. Oh-my-zsh er et sæt konfigurationer til zsh, der forbedrer shell-oplevelsen yderligere med plugins, temaer og et utal af tastaturgenveje.

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

Derpå vil den spørge dig, om du vil ændre din standard shell til Zsh. Det gør du, så svar bekræftende, og du er nu i gang med Zsh og Oh-My-Zsh.

(Stort preview)

Du vil bemærke, at prompten er meget renere nu. Du kan ændre udseendet af denne prompt ved at ændre temaet i filen ~/.zshrc.

Åbn den med nano, hvilket er lidt ligesom VIM, men du kan redigere ting og afslutte, når du har brug for det.

nano ~/.zshrc

Ændre den linje, der indstiller temaet. Der er en URL over den med en hel liste over temaer. Jeg synes, at den med “skyen” er fin. Og sød.

(Stort eksempel)

For at få hentet ændringer i .zshrc skal du kildekode det:

source ~/.zshrc
(Stort eksempel)

Opmærksomhed: Hvis du vælger et tema som “agnoster”, der kræver glyffer, skal du bruge en strømlinet infunderet version af Ubuntu Mono, der har … glyffer. Ellers vil din terminal bare være fuld af mærkelige tegn, som om du har moset dit ansigt på tastaturet. Nerd Fonts tilbyder en, der ser ud til at fungere ret godt.

Nu kan du gøre ting som at ændre mapper ved blot at indtaste mappenavnet. Ingen cd er nødvendig. Vil du gå tilbage til en mappe? Du skal bare lave en ... Du behøver ikke engang at skrive hele mappenavnet, du skal bare skrive de første par bogstaver og trykke på tabulator. Zsh vil give dig en liste over alle de filer/mapper, der passer til din søgning, og du kan bladre igennem dem.

(Stort eksempel)

Installation af Node

Som webudvikler vil du sandsynligvis installere Node. Du behøver vel ikke installere Node for at lave webudvikling, men det føles i hvert fald sådan i 2019!

Din første instinkt vil måske være at installere Node med apt, hvilket du kan gøre, men du ville fortryde det af to grunde:

  1. Versionen af Node på apt er sørgeligt forældet;
  2. Du bør installere Node med en versionsstyring, så du ikke løber ind i problemer med tilladelser.

Den bedste måde at løse begge disse problemer på, er at installere nvm (Node Version Manager). Da du har installeret zsh, kan du bare tilføje nvm-plugin’et i din zshrc-fil, og zsh tager sig af resten.

Først skal du installere plugin’et ved at klone i zsh-nvm repo’en. (Bare rolig, Git er standard på din Ubuntu-installation.)

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

Dernæst tilføjes det som et plugin i ~/.zshrc-filen.

`nano ~/.zshrc`plugins (zsh-nvm git)
(Stor forhåndsvisning)

Husk at kilde zshrc-filen igen med source ~/.zshrc, og du vil se, at nvm bliver installeret.

(Stor forhåndsvisning)

Nu kan du installere node med nvm. Det gør det nemt at installere flere sideløbende versioner af node og skifte mellem dem uden besvær. Desuden er der ingen tilladelsesfejl, når du laver globale npm-installationer!

nvm install --lts

Jeg anbefaler dette frem for standard nvm-installationen, fordi plugin’et giver dig mulighed for nemt at opgradere nvm. Dette er lidt af en smerte med standard “curl”-installationen. Det er én kommando med plugin’et.

nvm upgrade

Udnyt Auto Suggestions

Et af mine meget foretrukne plugins til zsh er zsh-autosuggestions. Det husker ting, du har skrevet i terminalen før, og genkender dem så, når du begynder at skrive dem igen, samt “auto-suggests” den linje, du måske har brug for. Dette plugin har været praktisk flere gange end jeg kan huske – specielt når det drejer sig om lange CLI-kommandoer, som jeg tidligere har brugt, men som jeg aldrig kan huske.

Klonér repo’en til mappen zsh extensions:

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

Føj den derefter til dine zsh-plugins og kildesæt zshrc-filen:

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

Pluginet læser din zsh-historik, så begynd at skrive en eller anden kommando, du har skrevet før, og se magien. Prøv at skrive den første del af den lange clone-kommando ovenfor.

(Stort eksempel)

Hvis du trykker ↹, vil den autokomplettere kommandoen. Hvis du bliver ved med at trykke på ↹, vil den cykle gennem alle de kommandoer i din historik, der kunne være et match.

Vigtige tastaturgenveje

Der er et par terminalgenveje, som jeg bruger hele tiden. Jeg finder det med alle mine værktøjer – herunder VS Code. At forsøge at lære alle genveje er spild af tid, fordi du ikke vil bruge dem nok til at huske dem.

Her er nogle få, som jeg bruger jævnligt:

Terminalgenvej Hvad gør det?
Ctrl + L Dette rydder terminalen og sætter dig tilbage til toppen. Det svarer til at skrive “clear”.
Ctrl + U Dette rydder kun den aktuelle linje.
Ctrl + A Sender markøren til begyndelsen af kommandolinjen.
Ctrl + E Føres til slutningen af linjen.
Ctrl + K Slet alle tegn efter markøren.

Det var det! Alt det andet har jeg sikkert lært og så glemt, fordi det aldrig bliver brugt.

Konfigurering af Git(Hub/Lab/Whatevs)

Git kommer på Ubuntu, så der er ingen installation nødvendig. Du kan følge instruktionerne på din kildekontrolhoster efter eget valg for at få dine ssh-nøgler oprettet og til at virke.

Bemærk, at i Github-vejledningen står der, at du skal bruge værktøjet “copy” til at kopiere din ssh-nøgle. Ubuntu har kommandoen “xcopy”, men den vil ikke fungere her, fordi der ikke er noget interop mellem Linux og Windows med hensyn til et klippebord.

I stedet kan du bare bruge Windows Clipboard executable og kalde den direkte fra terminalen. Du skal hente teksten først med cat, og derefter pipe det til Windows-udklipsholderen.

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

Github-dokumentationen fortæller dig, at du skal sørge for, at ssh-agent kører. Det gør den ikke. Du vil se dette, når du forsøger at tilføje din nøgle til agenten:

(Stort eksempel)

Du kan starte agenten, men næste gang du genstarter Windows, eller WSL stoppes, skal du starte den igen. Det skyldes, at der ikke er noget initialiseringssystem i WSL. Der er ingen systemd eller en anden proces, der starter alle dine tjenester, når WSL’en starter. WSL er stadig i preview, og teamet arbejder på en løsning for dette.

I mellemtiden er der, tro det eller ej, også et zsh-plugin til dette. Det hedder ssh-agent, og det er installeret sammen med oh-my-zsh, så det eneste du skal gøre er at henvise til det i .zshrc-filen.

zsh-nvm zsh-autosuggestions ssh-agent git

Dette vil starte ssh-agenten automatisk, hvis den ikke kører første gang du starter WSL. Ulempen er, at den vil bede dig om din passphrase hver gang WSL startes på ny. Det vil sige stort set hver gang du genstarter din computer.

(Stort preview)

VS Code og WSL

WSL har ingen GUI, så du kan ikke installere et visuelt værktøj som VS Code. Det skal installeres på Windows-siden. Det giver et problem, fordi du har et program, der kører på Windows-siden, der har adgang til filer på Linux-siden, og det kan resultere i alle mulige mærkværdigheder og “permission denied”-problemer. Som en generel tommelfingerregel anbefaler Microsoft, at du ikke ændrer filer i WSL-siden med Windows-programmer.

For at løse dette er der en udvidelse til VS Code kaldet “Remote WSL”. Denne udvidelse er lavet af Microsoft, og giver dig mulighed for at udvikle i WSL, men inde fra VS Code.

Når udvidelsen er installeret, kan du knytte VS Code direkte til Ubuntu-siden ved at åbne kommandopaletten (Ctrl + Shift + P) og vælge “Remote-WSL: New Window”.

(Stort eksempel)

Dette åbner en ny instans af VS Code, som giver dig mulighed for at arbejde, som om du var helt på Linux-siden af tingene. Hvis du laver “File/Open”, gennemser du Ubuntu-filsystemet i stedet for Windows-filsystemet.

(Stort eksempel)

Den integrerede terminal i VS Code åbner din smukt tilpassede zsh-opsætning. Alt “virker bare” som det skal, når du har Remote WSL-udvidelsen installeret.

Hvis du åbner kode fra din terminal med code ., vil VS Code automatisk registrere, at den blev åbnet fra WSL, og vil automatisk tilknytte Remote WSL-udvidelsen.

VS Code-udvidelser med Remote WSL

Remote WSL-udvidelsen til VS Code fungerer ved at oprette en lille server på Linux-siden og derefter oprette forbindelse til den fra VS Code på Windows-siden. Når det er tilfældet, vil de udvidelser, som du har installeret i VS Code, ikke automatisk blive vist, når du åbner et projekt fra WSL.

For eksempel har jeg et Vue-projekt åbent i VS Code. Selv om jeg har alle de rigtige Vue-udvidelser installeret til syntaksmarkering, formatering og lignende, opfører VS Code sig, som om den aldrig har set en .vue-fil før.

(Stort eksempel)

Alle de udvidelser, du har installeret, kan aktiveres i WSL. Du skal blot finde den udvidelse, du vil have i WSL, og klikke på knappen “Installer i WSL”.

(Stort eksempel)

Alle udvidelser, der er installeret i WSL, vises i deres eget afsnit i visningen Udvidelser Explorer. Hvis du har mange udvidelser, kan det være lidt irriterende at installere hver enkelt udvidelse enkeltvis. Hvis du bare vil installere alle de udvidelser, du har i WSL, skal du klikke på det lille cloud-download-ikon øverst i afsnittet “Local – Installed”.

(Stort preview)

Sådan opsætter du dine Dev Directories

Dette er allerede en holdningspræget artikel, så her er en, du ikke bad om, om hvordan jeg mener, du bør strukturere dine projekter på dit filsystem.

Jeg holder alle mine projekter på Linux-siden. Jeg lægger ikke mine projekter i “Mine dokumenter” og forsøger derefter at arbejde med dem fra WSL. Min hjerne kan ikke håndtere det.

Jeg opretter en mappe kaldet /dev, som jeg lægger i roden af min /home-mappe i Linux. Inde i den mappe opretter jeg en anden mappe, der har samme navn som min Github-repo: /burkeholland. I den mappe ligger alle mine projekter – også dem, der ikke er skubbet til Github.

Hvis jeg kloner et repo fra en anden Github-konto (f.eks. “microsoft”), opretter jeg en ny mappe i “dev”, der hedder /microsoft. Derefter kloner jeg repo’en til en mappe inden for denne.

Grundlæggende efterligner jeg den samme struktur som kildekontrol på min lokale maskine. Jeg finder det langt nemmere at ræsonnere om, hvor projekterne er, og hvilke repos de er knyttet til, alene i kraft af deres placering. Det er simpelt, men det er meget effektivt til at hjælpe mig med at holde alt organiseret. Og jeg har brug for al den hjælp, jeg kan få.

(Stort preview)

Browsing Files From Windows Explorer

Der er tidspunkter, hvor man har brug for at komme til en fil i Linux fra Windows-siden. Det smukke ved WSL er, at du stadig kan gøre det.

En måde er at få adgang til WSL ligesom et tilknyttet drev. Du får adgang til det med en \wsl$ direkte fra Explorer-linjen:

\wsl$
(Stor forhåndsvisning)

Du kan gøre dette af flere forskellige årsager. For eksempel havde jeg lige i dag brug for en Chrome-udvidelse, som ikke findes i webbutikken. Så jeg klonede repo’en i WSL, navigerede derefter til den som en “Unpacked Extension” og indlæste den i Edge.

En ting, som jeg gør med en vis hyppighed i Linux, er at åbne den mappe, der indeholder en fil, direkte fra terminalen. Det kan du også gøre i WSL ved at kalde explorer.exe direkte. Denne kommando åbner f.eks. den aktuelle mappe i Windows Explorer.

$ explorer.exe .

Denne kommando er dog en smule besværlig. På Linux er det bare open .. Vi kan lave den samme magi ved at oprette et alias i ~/.zshrc.

alias open="explorer.exe"

Docker

Når jeg sagde, at alle værktøjer skal ligge på Linux-siden, mente jeg det også. Det omfatter Docker.

Det er her, hvor gummiet virkelig begynder at møde vejen. Det, vi har brug for her, er Docker, der kører inde i Linux, der kører inde i Windows. Det er lidt af en russisk nesting Doll, når man skriver det ned i et blogindlæg. I virkeligheden er det ret ligetil.

Du skal bruge den korrekte version af Docker til Windows. I skrivende stund er det WSL 2 Tech Preview.

Når du kører installationsprogrammet, vil det spørge dig, om du vil bruge Windows-containere i stedet for Linux-containere. Det gør du helt sikkert. Ellers får du ikke mulighed for at køre Docker i WSL.

(Stor forhåndsvisning)

Du kan nu aktivere Docker i WSL ved at klikke på elementet i systembakken og vælge “WSL 2 Tech Preview”:

(Stor forhåndsvisning)

Når du har startet tjenesten, kan du bruge Docker i WSL, ligesom du forventer at kunne gøre det. Kørsel af Docker i WSL giver et ret stort ydelsesboost, samt et boost i koldstarttiden for containere.

Må jeg også anbefale, at du installerer Docker-udvidelsen til VS Code? Den sætter en visuel grænseflade på din Docker-opsætning og gør det generelt bare nemmere at arbejde med Docker, fordi du ikke behøver at huske alle de kommandolinjeflag og -indstillinger.

Få mere Bash på Windows

På dette tidspunkt burde du have fået en idé om, hvordan du sætter Bash på Windows, og hvordan det fungerer, når du får det der. Du kan tilpasse din terminal i det uendelige, og der findes alle mulige fede programmer, som du kan tilføje for at gøre ting som automatisk at indstille PATH-variabler, oprette aliaser, få en ASCII-ko i din terminal og meget mere.

Afvikling af Bash på Windows har åbnet et helt nyt univers for mig. Jeg er i stand til at kombinere Windows, som jeg elsker for produktivitetssiden, og Linux, som jeg er afhængig af som udvikler. Det bedste af det hele er, at jeg nu kan udvikle apps til begge platforme med én maskine.

Videre læsning

Du kan læse mere om Bash på Windows herovre:

  • “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
  • “Everything You Can Do With Windows 10’s New Bash Shell,” Chris Hoffman, How-To Geek

Særlig tak til Brian Ketelsen, Matt Hernandez, Rich Turner og Craig Loewen for deres tålmodighed, hjælp og vejledning i forbindelse med denne artikel.

(rb, dm, il)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.