DEV Community

Cover image for The Complete Windows Web Developer Setup Guide
Stephan Lamoureux
Stephan Lamoureux

Posted on • Updated on

The Complete Windows Web Developer Setup Guide

πŸ”­ Overview

After a lot of trial and error, I've been able to piece together a pretty respectable Windows dev environment. There are plenty of guides already out there, but none of them seem to cover the entire scope. I tried to do that here, without getting too deep into any individual topic. I believe this will leave the majority of users with a smooth Windows developer experience.

The repo for this guide contains some additional info and will be continually updated.

Prerequisites


🐧 WSL

The first and most important part of setting up your Windows dev environment is installing the Windows Subsystem for Linux (WSL). I recommend sticking with Ubuntu, but feel free to try out as many distributions as you like. There are no issues with having multiple distributions installed at once.

Installing WSL 2

WSL 2 is the latest version of WSL, adding new features like a full Linux kernel and full system call compatibility. There used to be a handful of steps needed to install it, but we now only need to enter the following command into PowerShell or Command Prompt:

wsl --install
Enter fullscreen mode Exit fullscreen mode

This command does the following:

  • Enables the optional WSL and Virtual Machine Platform components
  • Downloads and installs the latest Linux kernel
  • Sets WSL 2 as the default
  • Downloads and installs the Ubuntu Linux distribution (a reboot may be required)

Using the --install command defaults to Ubuntu and only works if WSL is not installed yet. If you would like to change your default Linux distribution, follow these docs.

User Config

Once the process of installing your Linux distribution with WSL is complete, open the distribution (Ubuntu by default) using the Start menu. You will be asked to create a User Name and Password for your Linux distribution. When you enter your new password, nothing will display in the terminal. Your keyboard is still working! It is just a security feature.

  • This User Name and Password is specific to each separate Linux distribution that you install and has no bearing on your Windows user name.

  • Once you create a User Name and Password, the account will be your default user for the distribution and automatically sign-in on launch.

  • This account will be considered the Linux administrator, with the ability to run sudo (Super User Do) administrative commands.

  • Each Linux distribution running on WSL has its own Linux user accounts and passwords. You will have to configure a Linux user account every time you add a distribution, reinstall, or reset.

Updating Linux

It is recommended that you regularly update and upgrade your packages. In Ubuntu or Debian, we use the apt package manager:

sudo apt update && sudo apt upgrade
Enter fullscreen mode Exit fullscreen mode

Windows does not automatically update or upgrade your Linux distribution(s). This is a task that most Linux users prefer to control themselves.

Mapping Your Linux Drive

When you open the Windows file explorer, it displays your devices and drives. We are going to add our Ubuntu virtual drive as a network location for easy access.

  1. Open the \\wsl$\ location from file explorer:
    File explorer search bar

  2. Right-click on the Ubuntu folder, and select Map network drive:
    Mapping network drive

  3. Select the drive letter you would like to use, leave Reconnect at sign-in checked and Connect using different credentials unchecked, and then click finish (mine will look slightly different because it's already been done):
    Mapping network drive

  4. The end result should look something like this:
    File explorer

If you wanted to access your Windows files from the Linux terminal, they are found in the /mnt/ directory, so your Windows user directory would be located at /mnt/c/Users/username.

With your Ubuntu drive mapped, you can easily drag/drop or copy/paste Windows files to the Linux file system by using the file explorer.

However, it is recommended to store your project files on the Linux file system. It will be much faster than accessing files from Windows and it can also be a little buggy.

Pin Your Code Directory

Another quick tip I have is to create a code directory inside of Ubuntu, and then pin it to the quick access menu found on the left side of the file explorer. This comes in handy when transferring files quickly between Windows and Linux.

  1. Open file explorer and click on the Ubuntu network drive we created
  2. Select the home dir, and then your user directory
  3. Right-click and create a new folder, name it code, or anything else you'd like
  4. Drag that new folder to the left, underneath the star icon that says Quick access

    My code directory

Restarting WSL

If for some reason WSL stops working, you can restart it with these two commands from PowerShell/Command Prompt:

wsl.exe --shutdown
wsl.exe
Enter fullscreen mode Exit fullscreen mode

If you go back to your Linux shell everything should be back to normal.


πŸ‘¨β€πŸ’» Windows Terminal

To launch a Linux terminal we currently need to use the Ubuntu icon from the Start menu or enter the wsl or bash commands into PowerShell/Command Prompt. Another option that will give us more features like tabs, split views, themes, transparency, and key bindings, is to use the Windows Terminal. There are also a few other terminals like Cmder, ConEmu, or Hyper, but in my experience, Windows Terminal works extremely well.

Installing Windows Terminal

Windows 11 comes with Windows Terminal by default, but If you are using Windows 10, Download and install Windows Terminal through the Microsoft Store.

Terminal Settings

A couple of quick things I recommend setting up are the default profile and your starting home directory. These settings make it so launching Windows Terminal will open directly into WSL inside our user's home directory.

Default Profile

Windows Terminal will open a PowerShell or Command Prompt shell when launched by default, here is how to switch it to WSL:

  1. Select the Λ… icon from Windows Terminal and go to the Settings menu:
    Windows terminal settings

  2. In the Startup section you will find the Default profile dropdown, select Ubuntu. Below it, select Windows Terminal as the Default terminal application:
    Default shell profile

Starting Directory

A default Ubuntu terminal will open to the root directory. To make finding your files a little quicker we can have it open into your home directory instead.

  1. Under the Profiles section in the settings menu click on Ubuntu

  2. At the General tab, you will find a Starting directory input

  3. Enter the following replacing "username" with your Ubuntu user name: \\wsl$\Ubuntu\home\username

  4. You can leave the Use parent process directory box unchecked

  5. If it is still opening into your / directory, change the Command line setting located right above the Starting directory input box to the following: wsl.exe -d Ubuntu

Starting directory in Ubuntu terminal

There are many more settings to explore, and there is also a JSON file you can edit for more advanced customizations.

Check out this guide for some popular Windows Terminal themes and how to install them.


πŸ“ Git Config

Git should come pre-installed on most, if not all of the WSL Linux distributions. To ensure you have the latest version, use the following command in an Ubuntu or Debian based distro:

sudo apt install git
Enter fullscreen mode Exit fullscreen mode

Name

To set up your Git config file, open a WSL command line and set your name with this command (replacing "Your Name" with your preferred username):

git config --global user.name "Your Name"
Enter fullscreen mode Exit fullscreen mode

Email

Set your email with this command (replacing "youremail@domain.com" with the email you prefer):

git config --global user.email "youremail@domain.com"
Enter fullscreen mode Exit fullscreen mode

Username

And finally, add your GitHub username to link it to git (case sensitive!):

git config --global user.username "GitHub username"
Enter fullscreen mode Exit fullscreen mode

Make sure you are inputting user.username and not user.name otherwise you will overwrite your name and you will not be correctly synced to your GitHub account.

You can double-check any of your settings by typing git config --global user.name and so on. To make any changes just type the necessary command again as in the examples above.


😺 GitHub Credentials

Creating your Personal Access Token

GitHub has removed the ability to use a conventional password when working in a remote repository. You are now required to create a personal access token instead.

Personal access tokens (PATs) are an alternative to using passwords for authentication to GitHub when using the GitHub API or the command line.

Follow these docs for step-by-step instructions on creating your personal token.

Git Credential Manager

Once you enter in your token the first time, it can be stored via Git Credential Manager (GCM) so you won't have to authenticate yourself each time.

You can have Git installed in WSL and also in Windows at the same time. Git for Windows includes GCM and is the preferred way to install it.

Windows Git Installer Menu

You can also download the latest installer for Windows to install the GCM standalone version.

Storing Your Token

Once Git Credential Manager is installed you can set it up for use with WSL. Open your WSL terminal and enter this command:

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"
Enter fullscreen mode Exit fullscreen mode

Note:

If you ever receive the following error message:

/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager-core.exe store: 1: 
/mnt/c/Program Files/Git/mingw64/libexec/git-core/git-credential-manager-core.exe: not found
Enter fullscreen mode Exit fullscreen mode

Try using the this command:

git config --global credential.helper store
Enter fullscreen mode Exit fullscreen mode

πŸ’€ Zsh

Z shell works almost identically to the standard BASH shell found on default Linux installs. What makes it different is its support for plugins and themes, along with some extra features like spelling correction and recursive path expansion. It's time to throw BASH in the trash!

Installing Zsh

Zsh can be installed with one command:

sudo apt install zsh
Enter fullscreen mode Exit fullscreen mode

After installing, type the zsh command. Zsh will ask you to choose some configurations. We will do this later on while installing oh-my-zsh, so choose option 0 to create the config file and prevent this message from showing again.

OhMyZsh

The most popular plugin framework by far is OhMyZsh. It comes preloaded with loads of plugins, themes, helpers, and more. It can help with productivity for sure, but more importantly, it just looks cool 😎.

cURL

First off, we need to make sure we have cURL installed. Short for "Client URL", it's a way to transfer data from the command line, and that's how we will download OhMyZsh.

Install curl with:

sudo apt install curl
Enter fullscreen mode Exit fullscreen mode

Installing OhMyZsh

Enter the following command into your terminal to install OhMyZsh:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Enter fullscreen mode Exit fullscreen mode

That's it! You should now see a .oh-my-zsh directory inside of your home directory. To change your plugins and themes you will need to edit your .zshrc file, also found in your home dir.

Here is a list of all the themes and plugins that come bundled with OhMyZsh.

More Plugins

There are countless plugins available, but these are the two I recommend most.

zsh-autosuggestions

Autosuggestions for zsh, It suggests commands as you type based on history and completions.

  • 1. Clone this repository into $ZSH_CUSTOM/plugins (by default ~/.oh-my-zsh/custom/plugins)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Enter fullscreen mode Exit fullscreen mode
  • 2. Add the plugin to the list of plugins for Oh My Zsh to load (inside ~/.zshrc):
plugins=(git zsh-autosuggestions)
Enter fullscreen mode Exit fullscreen mode
  • 3. Start a new terminal session.

zsh-syntax-highlighting

This package provides syntax highlighting for the shell zsh. It enables highlighting of commands whilst they are typed at a zsh prompt into an interactive terminal. This helps in reviewing commands before running them, particularly in catching syntax errors.

  • 1. Clone this repository in oh-my-zsh's plugins directory:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
Enter fullscreen mode Exit fullscreen mode
  • 2. Activate the plugin in ~/.zshrc:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
Enter fullscreen mode Exit fullscreen mode
  • 3. Start a new terminal session.

More

A huge list of plugins can be found at the awesome zsh plugins repo.


πŸ“¦ Node.js

Node.js is a JavaScript runtime environment that executes JavaScript code outside a web browser. It allows us to install packages, run local web servers, create APIs, and more.

NVM

You will likely need to switch between multiple versions of Node.js based on the needs of different projects you're working on. Node Version Manager allows you to quickly install and use different versions of node via the command line.

Installing NVM

  • 1. Open your Ubuntu command line and Install NVM with:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

To verify installation, enter: command -v nvm. This should return 'nvm', if you receive 'command not found' or no response at all, close your current terminal, reopen it, and try again.

  • 2. List which versions of Node are currently installed (should be none at this point):
nvm ls
Enter fullscreen mode Exit fullscreen mode

Ubuntu terminal displaying node not installed

  • 3. Install both the current and stable LTS versions of Node.js.

Install the current stable LTS release of Node.js (recommended for production applications):

nvm install --lts
Enter fullscreen mode Exit fullscreen mode

Install the current release of Node.js (for testing latest Node.js features and improvements, but more likely to have issues):

nvm install node
Enter fullscreen mode Exit fullscreen mode
  • 4. List what versions of Node are installed:
nvm ls
Enter fullscreen mode Exit fullscreen mode

Now you should see the two versions that you just installed listed.

Ubuntu terminal displaying node installed

  • 5. Verify that Node.js is installed and the current version:
node --version
Enter fullscreen mode Exit fullscreen mode

Then verify that you have NPM installed as well:

npm --version
Enter fullscreen mode Exit fullscreen mode

Changing Node Versions

Use the following commands to change the version of Node you would like to use for any given project:

Switch to the Current version:

nvm use node
Enter fullscreen mode Exit fullscreen mode

Switch to the LTS version:

nvm use --lts
Enter fullscreen mode Exit fullscreen mode

You can also use the specific number for any additional versions you've installed:

nvm use v8.2.1.
Enter fullscreen mode Exit fullscreen mode

To list all of the versions of Node.js available, use the command: nvm ls-remote.

NPM

Node Package Manager is the default package manager for Node.js. It is a command-line tool used to download or publish packages and manage the dependencies of a project. There is a searchable repository of all available NPM packages at https://www.npmjs.com/.

New Projects

When creating a new project that will utilize NPM, it must be initialized with the init command. First, make sure you are in the root directory of your project, and then use the following command:

npm init
Enter fullscreen mode Exit fullscreen mode

package.json

npm init generates a package.json file and will prompt you for the metadata of your project. This includes things like the name, version, description, and license. You can think of it as the blueprint of your project as it will also contain the packages it depends on. The metadata can be changed at any time by editing the package.json file after the initialization.

If you would like to automatically populate the initialization with all the default values, you may add the --yes flag.

npm init --yes
Enter fullscreen mode Exit fullscreen mode

Installing Modules

Modules are installed via the npm install or npm i command.

npm install react
Enter fullscreen mode Exit fullscreen mode

The above command will install the React module as a dependency in package.json.

We can also install NPM packages globally on our system. This is useful for utilities like command line interfaces.

Yarn is another widely used node package manager, if we wanted to use it on all our node projects we would need the --global or -g flag.

npm install --global yarn
Enter fullscreen mode Exit fullscreen mode

Dependencies

You can save a module as either a dependency or a developer dependency.

A dependency would be something that your project cannot function properly without.

The --save flag used to be needed to install modules as a dependency, but it is now done automatically with the install command.

npm install --save gray-matter
Enter fullscreen mode Exit fullscreen mode

Is the same as:

npm install gray-matter
Enter fullscreen mode Exit fullscreen mode

VS Code example of the dependencies section of package.json

Developer Dependencies

A developer dependency would be the modules used to build the project, not run it. This would include things like linters and testing tools.

Developer dependencies are added with the --save-dev or -D flag. This adds the module to the devDependencies section of package.json

npm install --save-dev husky
Enter fullscreen mode Exit fullscreen mode

VS Code example of the devDependencies section of package.json

Batch Installing

Apart from installing a single module, you can install all modules that are listed as dependencies and devDependencies:

npm install
Enter fullscreen mode Exit fullscreen mode

This will install all modules listed in the package.json of your current directory.

If we only wanted to install the dependencies needed to run our project, the --production flag is used:

npm install --production
Enter fullscreen mode Exit fullscreen mode

the --production flag will only install the modules from the dependencies section of package.json and ignore the devDependencies. The perk of this is notably reducing the size of the node_modules folder.

Uninstalling

Removing modules works in the same way as installing them. Flags will need to be used for any global or developer dependencies.

Dependencies:

npm uninstall react
Enter fullscreen mode Exit fullscreen mode

Developer Dependencies:

npm uninstall --save-dev husky
Enter fullscreen mode Exit fullscreen mode

Global Installs:

npm uninstall --global yarn
Enter fullscreen mode Exit fullscreen mode

Versioning

Package versions are identified with major, minor, and patch releases. 8.1.1 would be major version 8, minor version 1, and patch version 1.

You can specify an exact version number by using the @ symbol.

npm install react@17.0.1
Enter fullscreen mode Exit fullscreen mode

Two more symbols we can use are ^ and ~.

^ is the latest minor release.
For example, npm install ^8.1.1 specification might install version 8.3.1 if that's the latest minor version.

~ is the latest patch release.
In the same way as minor releases, npm install ~8.1.1 could install version 8.1.6 if that's the latest patch version available.

When using the npm install or npm i command, the latest minor version will be used.

package-lock.json

The exact package versions will be documented in a generated package-lock.json file.

The values found inside the dependencies and devDependencies objects of the package.json file include a range of acceptable versions of each package to install.

package-lock.json is generated by the npm install command and contains the exact versions of the dependencies used.

Scripts

package.json also contains a scripts property that can be defined to run command-line tools installed on the current project. This can include things like running tests, formatting your code, and launching a local server.

VS Code example of the scripts section of package.json

NPM scripts are run by using the run command. With the above configuration, you would use the following command to have prettier format your code:

npm run format
Enter fullscreen mode Exit fullscreen mode

The keys in the scripts object are the command names and the values are the actual commands.


Check out the official npm and Node.js docs for more in-depth guides.


πŸ’» Visual Studio Code

There are many amazing code editors available for free, but Visual Studio Code has become the defacto standard and my personal favorite.

Installing VS Code

VS Code is available on Windows, macOS, and Linux. You can download the latest Windows installer here. I recommend using the stable build.

Changing the Default Shell

The WSL2 shell can be chosen as the default VS Code terminal by pressing Ctrl + Shift + P and typing/choosing Terminal: Select Default Profile, then selecting zsh:

VSCode default shell

Remote Extension

Install the Remote - WSL extension on VS Code.

This allows you to use WSL as your integrated development environment and will handle compatibility and pathing for you. Learn more.

This extension will also allow you to launch VS Code right from your WSL terminal by using the code command.

If I was inside the root directory of my repository, I would use code . to launch the entire directory inside VS Code.

cd my-project
code .
Enter fullscreen mode Exit fullscreen mode

More Extensions

The number of extensions available for VS Code can be overwhelming, here are some of the ones I use the most.

  • Live Server - Launch a local development server with live reload feature for static & dynamic pages.
  • Live Share - Includes everything you need to start collaboratively editing and debugging in real-time.
  • GitLens - Quickly glimpse into whom, why, and when a line or code block was changed.
  • Git History - View git log, file history, compare branches or commits
  • Prettier - Prettier is an opinionated code formatter.
  • ESLint - Find and fix problems in your JavaScript code
  • Color Highlight - This extension styles CSS/web colors found in your document.
  • Markdown All in One - Markdown keyboard shortcuts, table of contents, auto preview, and more
  • markdownlint - Markdown linting and style checking for Visual Studio Code
  • GitHub Markdown Preview - Adds styling, markdown checkboxes, footnotes, emoji, and YAML preamble.
  • Wakatime - Metrics, insights, and time tracking automatically generated from your programming activity.
  • Dash - Dash, Zeal, and Velocity integration in Visual Studio Code
  • Draw.io Integration - This unofficial extension integrates Draw.io (also known as diagrams.net) into VS Code.
  • Docker - Makes it easy to create, manage, and debug containerized applications.
  • Python - IntelliSense, Linting, Debugging, Jupyter Notebooks, refactoring, unit tests, and more.

Note:

You will need to install any VS Code extensions for your Remote - WSL. Extensions already installed locally on VS Code will not automatically be available. Learn more.


🍫 Chocolatey

Chocolatey is a package manager like homebrew, but for Windows.

Admin Shell

Before we start the installation process, I want to cover launching an administrative shell from windows. There are a few ways to do this:

Option 1

Right-click on the Windows start menu and select Windows Terminal (Admin):

Right clicked Windows start menu
Once your terminal loads, click the Λ… icon and open a new PowerShell tab. It should say Administrator: Windows PowerShell in the new tab:

Admin PowerShell

Option 2

If you have Windows Terminal on your taskbar, Shift + Right-Click on the icon and select run as administrator, and then open a new PowerShell tab:

Right click windows terminal icon

Option 3

Use the search bar from the Start menu and type in powershell. A link to Run as Administrator will display:

Search PowerShell from the start menu

Option 4

Windows Terminal added a new feature where you can launch a PowerShell/Command Prompt profile in an Admin terminal automatically. In the Windows Terminal settings, scroll down to your desired profile and then toggle the Run this profile as Administrator switch. Now you can skip all the steps above, and the terminal will always launch as admin.

Admin tab in Windows Terminal

Installing Chocolatey

  • 1. Open an administrative PowerShell terminal and run:
Get-ExecutionPolicy
Enter fullscreen mode Exit fullscreen mode
  • 2. If it returns Restricted, then run one of the following commands:
Set-ExecutionPolicy AllSigned
Enter fullscreen mode Exit fullscreen mode

or

Set-ExecutionPolicy Bypass -Scope Process
Enter fullscreen mode Exit fullscreen mode

With PowerShell, you must ensure Get-ExecutionPolicy is not Restricted. We suggest using Bypass to bypass the policy to get things installed or AllSigned for quite a bit more security.

  • 3. Now run the following command:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Enter fullscreen mode Exit fullscreen mode

If you don't see any errors, you are ready to use Chocolatey! Type choco or choco -? now, or see Getting Started for usage instructions.

Basic Chocolatey Commands

We use the choco command to run chocolatey. (Remember, you must use an administrative shell for it to work.)

Install a new package:

choco install filename
Enter fullscreen mode Exit fullscreen mode

Remove a package:

choco uninstall filename
Enter fullscreen mode Exit fullscreen mode

List all of the installed packages:

choco list
Enter fullscreen mode Exit fullscreen mode

Update:

choco upgrade filename
Enter fullscreen mode Exit fullscreen mode

or to update everything at once:

choco upgrade all
Enter fullscreen mode Exit fullscreen mode

Windows Apps

Search for available apps on the Community Package Repository.

Here are a few of my favorite (free) apps for productivity and development on Windows:

  • Wox - A full-featured launcher
  • RunJs - JavaScript and TypeScript playground
  • Responsively - A modified web browser that helps in responsive web development.
  • Zeal - the Windows version of Dash
  • Figma - A collaborative UI design tool
  • draw.io - Flowchart maker and diagram software
  • GitHub Desktop - A GUI for Git
  • Postman - API tools
  • Notion - Project management and note-taking software
  • Microsoft PowerToys - A set of utilities for power users

You can download all these at once with the following command using chocolatey in an admin shell:

choco install wox runjs responsively zeal figma drawio github-desktop postman notion powertoys -y
Enter fullscreen mode Exit fullscreen mode

πŸͺœ Chrome Extensions

These are all available as Firefox extensions as well.

  • React Dev tools - Adds React debugging tools to the Chrome Developer Tools.
  • ColorZilla - Advanced Eyedropper, Color Picker, Gradient Generator, and other colorful goodies
  • Axe Accessibility - Accessibility Checker for Developers, Testers, and Designers in Chrome
  • daily.dev - Get a feed of the hottest developer news personalized to you.
  • Nimbus Capture - Screen Capture full Web page or any part.
  • WhatFont - With this extension, you could inspect web fonts by just hovering on them.
  • JSON Formatter - Makes JSON easy to read.

πŸ“š References

Top comments (24)

Collapse
 
brads profile image
Bradley Oliver

Only thing I say your missing is PowerToys for windows ...

Collapse
 
stephanlamoureux profile image
Stephan Lamoureux

Thanks for pointing that out, its been added πŸ‘

Collapse
 
stephanlamoureux profile image
Stephan Lamoureux

I ported this over from the github repo and it was not too seamless, please let me know if there are any format issues etc!

Collapse
 
haresh0398 profile image
haresh

I cant create any folder inside Ubuntu home\ directory. Windows says "You need permission to perform this action"😣

Collapse
 
stephanlamoureux profile image
Stephan Lamoureux

Are you trying from the terminal? You should be able to use mkdir folder_name

Collapse
 
dcs_ink profile image
dan

Thanks for the putting this together. I've been seeing some issues with a React project, mainly no auto refresh with code change. Seems obvious now but I've been keeping the project files on a second SSD. I just tested a new project on the Linux side and it works!

Collapse
 
alesbe profile image
alesbe

Great article! I used a very simmilar environment, I used Docker and MongoDB a lot so ended up dual booting linux with Windows instead of using WSL and now I'm using only Linux!

If you use WSL daily, I recommend trying directly a Linux distro! Try it in a different hard drive, virtual machine or USB before switching and see if you like it, but overall I had a very good experience.

Collapse
 
stephanlamoureux profile image
Stephan Lamoureux • Edited

Thanks! I actually did the opposite of you and started off with Linux only and then moved over to dual boot. I do enjoy Linux, but it didn’t have some of the software I needed or gaming ability. I ended up getting tired of keeping two operating systems up to date and removed the dual boot.

Collapse
 
janinelourens profile image
Janine Lourens

Hi following along with this tutorial but:
git-credential-manager-core.exe has been renamed to git-credential-wincred.exe

stackoverflow.com/questions/724724...

Collapse
 
stephanlamoureux profile image
Stephan Lamoureux

Thank you! I have just updated the guide. The issue was that git-credential-manager-core.exe was moved to a new directory so the path needed to be changed.

Collapse
 
andrewharpin profile image
Andrew Harpin

You may want to emphasize web development

Collapse
 
ambriel profile image
Ambriel Goshi

Very valuable article

Collapse
 
drsimplegraffiti profile image
Abayomi Ogunnusi

Thank you for this post...

Collapse
 
marius93rm profile image
marius93rm

If someday I will buy a Surface, I will use this guide, great job!
Sincerely Mac User

Collapse
 
connor_cc profile image
Connor

Thanks!

Collapse
 
tqbit profile image
tq-bit

This comes perfectly in time for my new setup! Thanks a lot for the detailled descriptions.

Collapse
 
calebbarnes profile image
CalebBarnes • Edited

Good article!

I used to use WSL but I prefer to use the cross platform Powershell now to avoid weird VM edge cases (like working with electron) and other weird WSL bugs that come up.

Powershell has similar things like oh-my-posh for themeing. Most of the bash commands just work these days and you can get some more similar bash functionality by customizing your PowerShell $PROFILE.

My PowerShell $PROFILE:

Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme robbyrussel

# Shows navigable menu of all options when hitting Tab
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete

# Autocompletion for arrow keys
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward

$env:NODE_ENV = "development"

# Easily create aliases for any commands you want
function dev { yarn start }
Enter fullscreen mode Exit fullscreen mode
Collapse
 
jandedobbeleer profile image
Jan De Dobbeleer • Edited

This won't work anymore though:

Import-Module oh-my-posh
Set-PoshPrompt -Theme robbyrussel
Enter fullscreen mode Exit fullscreen mode

You'll need to follow the guide here and have a look at the migration guide.

Collapse
 
be41d45 profile image
Be41d45

Change the title, this how-to is dedicated for frontenders. Thanks in advance.

Also my tip is to wrap git with gh cli cli.github.com/ . It allows to pass many steps described in your article and speed up process.

Collapse
 
gcoleman2001 profile image
gcoleman2001

Nice blog...only downside is this is a disaster to setup if you are behind a company vpn has been my experience, too much messing with resolv.conf among other things....unless somebody has some steps they can share ??

Collapse
 
robole profile image
Rob OLeary

Thanks for sharing. I think this will helps folks.

I think if you have a complete choice of software , it would be more straightforward to go with a Linux distro and the default shell (usually Bash) You just install the OS and you skip the first 2 steps. No need to install a package manager.

For beginners, this may be a better route if they just want a "dev" machine. It just depends on what you are accustomed to, and what your preferences are. I use Linux and Windows, and rarely feel the need to use WSL or WINE. I go one way or the other!