使用适用于 Linux 的 Windows 子系统进行 Web 开发
(本文最初于 2019 年 9 月 16 日发布在 ryanlanciaux.com 上。照片由Daniel von Appen 在 Unsplash 上拍摄)
我心爱的 MacBook Pro 目前在 Apple Care 维修。可惜的是,这周我有很多事情要做,而且没有其他专门用于开发的电脑。在维修期间,我会在装有Windows Subsystem for Linux v2 的Windows 桌面上进行日常开发工作。
Windows Subsystem for Linux 已经发布一段时间了,但 2.0 版本即将发布。目前已报告了许多改进,但最让我兴奋的是速度/性能的提升。虽然我还没有在这台电脑上真正写过多少代码,但就我为接下来一周准备的仓库而言,WSL 2 似乎运行得相当快。
安装 WSL 2
有许多关于安装 WSL 2 的指南,但我参考的是微软官方文档和Thomas Maurer 的这篇文章。
这些指南相当完整,但在尝试安装 WSL 之前,我还是有点小失误,没能确保所有系统更新都已完成。加入 Windows Insider 计划后,请确保系统更新已完成,并且你的 Windows 内部版本为 18917(或更高)。你可以运行“winver”来确认你的 Windows 版本。
安装 WSL 2 后,前往 Microsoft Store 下载 Ubuntu,然后wsl --set-version Ubuntu 2
从 Powershell 设置 WSL 版本。
希望您可以从开始菜单运行 Ubuntu,但在安装过程的这一点上,我开始收到错误:
The requested operation could not be completed due to a virtual disk system limitation. Virtual hard disk files must be uncompressed and unencrypted and must not be sparse.
原来我的 Ubuntu 目录在 Windows 中被压缩了。一旦更改此文件夹的压缩设置,我就能运行我的 Ubuntu 发行版了。有关更多信息,请参阅 GitHub 上的讨论。
安装 nvm
nvm 是一个 Node 版本管理器。我用它来运行不同版本 Node 的项目。nvm 的安装步骤可以参考文档中的安装说明。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
安装节点
安装 nvm 后,可以通过输入以下命令安装 node nvm install v#
- 我默认安装了 node v11。你可以输入以下命令指定默认安装方式:nvm alias default v11
安装 yarn
我通常使用 yarn 而不是 npm cli 来管理 node 依赖。要安装 yarn,请按照项目安装指南中的说明进行操作:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Yarn 应该已经安装在你的发行版上了,对吧?对我来说,还没那么容易。我导航到一个项目并运行后yarn install
,收到了一条错误消息:
00h00m00s 0/0: : ERROR: There are no scenarios; must have at least one.
经过一番研究,我偶然发现GitHub 上的一个帖子,其他人也遇到了同样的问题。
原来还有一个yarn
通过 .yaml 安装的cmdtest
。删除 cmdtest( sudo apt remove cmdtest
) 并按照标准 yarn 安装说明操作应该可以解决问题。需要注意的是,在遇到这个错误并找到解决办法后,我注意到安装说明中提到 Ubuntu 17.04 及以上版本可能会遇到这种情况,但我没注意到🤦♂️。
VS 代码
如果你没有Visual Studio Code,你应该安装它,然后Remote - WSL Plugin
该插件允许您code .
在 Ubuntu 终端中输入并在 Windows 中的代码中打开项目(尽管您始终可以使用 vim)
安装 zsh 并设置为默认 shell(可选)
我使用 zsh 和 oh-my-zsh 作为默认 shell。安装说明如下:
Windows 终端
Windows 终端是一款新的终端客户端,可用于运行多个 Shell 应用程序(Powershell、WSL、cmd 等)。我主要用它来运行 WSL,但它也能启动 Powershell/cmd 选项卡,这点很棒。Windows终端可在 Microsoft Store 下载。
默认情况下,Powershell 是我的默认命令行应用程序。要将其更改为 WSL,请打开设置并更改defaultProfile
属性以匹配你的 WSL 发行版的 guid 属性。例如:
{
..
"defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"profiles": [
...,
{
"acrylicOpacity": 0.5,
"closeOnExit": true,
"colorScheme": "Solarized Dark",
"commandline": "ubuntu",
"cursorColor": "#FFFFFF",
"cursorShape": "bar",
"fontFace": "Consolas",
"fontSize": 10,
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"historySize": 9001,
"icon": "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",
"name": "Ubuntu",
"padding": "0, 0, 0, 0",
"snapOnInput": true,
"startingDirectory": "~/",
"useAcrylic": false
},
}
默认配置文件与我的 Ubuntu 配置文件的 guid 匹配。另外需要注意的是,我修改了commandline
属性,ubuntu
而不是默认加载到我的主目录中(可能有更好的方法)。
通过 IP 地址而不是 localhost 引用 Web 应用程序
WSL 文档中提到了这一点,但我觉得在这里也提一下也不错。目前你需要通过 IP 地址而不是 localhost 来访问你的应用程序。
ip addr | grep eth0
这应该会获取您可以用来引用应用程序的 IP 地址。
总结
目前就是这样 - 虽然我期待着重新使用我的标准开发机器,但我很高兴在接下来的几天里尝试 WSL 2。
更新:
经过大约一周的使用,我对 WSL 2 的体验印象深刻。当我的电脑在商店时,我能够成功地在 Windows 上完成我的工作。
鏂囩珷鏉ユ簮锛�https://dev.to/ryanlanciaux/web-development-with-windows-subsystem-for-linux-4icc