我的 WSL 前端开发体验优化之路

2023-06-24 12:26:22 +08:00
 theprimone

WSL 诞生之前基于 Windows 的开发体验在我印象中很差,大概记得之前还是在 CMD 或者 PowerShell 终端中操作。特别是每次需要重新安装开发环境的时候,是我很不愿意面对的,我都是现打开各种网站下载安装的。另外就是对于开发环境和项目的管理,每次也都会很纠结,这个或者那个东西放哪里合适,多少会有些强迫症。

接触 WSL 之后当时就觉得这种开发方式太 Amazing 了。所以从 WSL 1 一直用到了现在的 WSL 2 ,绝大多数开发时间都是 WSL 上。当然,对于一个相对陌生的环境熟悉起来多少是有点痛苦的,这里有一篇文章总结了大部分的遇到的问题:《当一名前端攻城狮把 WSL 作为主力开发系统之后……》

另外即使是像 Linux 这样的系统已经很方便我们去配置各种东西了,但是由于需要手动去找到各种配置文件再设定合理的配置,这对于上了年纪的人来说并不友好。所以去年又总结了一下自己开发环境的搭建流程:《我的 Windows 开发环境搭建手册》

当时是立了 flag 会弄个脚本的,直到这个端午假期,终于行动起来了。契机是想通过 SSH 连上 WSL ,一通折腾搞定之后赶紧总结了一下,心想着下次再配置开发环境这一套走下来人都麻了吧。

所以前两天爆肝把脚本搞了出来,目前效果还行,满足了基本需求,那之后我就能在任意满足需求的电脑上快速创建出一套统一的开发环境出来,不由得让人很振奋。当然,如果都初始化了一套 WSL 环境出来了,那也完全可以导出镜像之后重复利用,下一步是有这个打算的,不过看起来导出的镜像挺大的,放到云盘的话感觉下载是个大问题 😂

One more thing,脚本搞定之后我又尝试用必剪做了个演示视频,第一次正经尝试做视频,虽然很麻烦,但还挺有意思的。

WSL 2 开发环境脚本搭建演示

这下算是把我对 WSL 做的各种工作梳理完了,一通搞下来也算是为了安利 WSL 吧,毕竟目前还没接触到同好,欢迎各位朋友入坑,有什么意见欢迎交流讨论。接下来的工作就是不断优化 WSL 开发环境和相关脚本了。

最后,本来端午是打算看龙舟的,净折腾这个了,哈哈哈。

6711 次点击
所在节点    前端开发
79 条回复
theprimone
2023-06-25 09:13:00 +08:00
@kid1412621 我是用的 Windows 上的,如果装在 WSL 上,没有 UI 多少有些不方便了,而且刚好 Windows 不也得用吗。不过最好还是软路由之类的外设方案感觉更舒服,虽然我一直想弄,但是第一步买哪个设备我都不清楚 😂
theprimone
2023-06-25 09:21:16 +08:00
@mattxlee 我追求的时更好开发体验和可玩性,能够拥抱整个 Linux 生态,这不是很酷吗?符合我对科技的想象,虽然还没深入使用 Linux ,但是发展潜力巨大 😂 至于开发体验包括了终端美化和插件支持,还有上文说过的平台一致性,能跟 CI 环境一致,以及可以避免一些跨平台的奇葩问题等等。
theprimone
2023-06-25 09:22:52 +08:00
@MEIerer 现在我家里的设备服役有点久了,感觉启动也有点慢,我配置了开机启动 WSL ,再加少重启可以解决 😂
lilei2023
2023-06-25 09:26:57 +08:00
配合 Windows Terminal 终端目前体验还不错, 就是存在内存泄漏,还不能再配置文件里面限制,否则一旦开多了项目就容易卡死,只能重启,这个很蛋疼。不过没用过 最新的 1.3 版本
ShadowPower
2023-06-25 09:37:16 +08:00
初略看了一下楼主的文章,大多数内容还是用 Linux 开发时折腾的那些
我当年还在折腾 WSL1 用 Docker 、WSL2 用 Systemd 之类的……
yunyuyuan
2023-06-25 09:39:58 +08:00
同前端,工作机 arch ,个人机 Windows 。用过 wsl 闪退就弃了,而且有一个 wsl 无法解决的问题:nvim 自动切换输入法的插件,无法对微软拼音生效。非常影响开发体验
leeyuzhe
2023-06-25 09:42:26 +08:00
我给 wsl 以及 jetbrain 提了无数 bug ,直到上个月对我而言才没有已知 bug 。你知道我这两年怎么过的吗.jpg
theprimone
2023-06-25 09:46:48 +08:00
theprimone
2023-06-25 09:49:40 +08:00
@ShadowPower 毕竟是前端,哈哈哈,大部分是 Windows 和 WSL 互操作的问题。不过现在使用 Docker 和 systemd 还有坑吗?我刚尝试 systemd 管理 sshd 呢。
theprimone
2023-06-25 09:51:38 +08:00
@yunyuyuan arch 太秀辣。才知道还有自动切换输入法的插件,这是根据什么判断哦?另外我没有自带输入法 😂
theprimone
2023-06-25 09:52:17 +08:00
@leeyuzhe 是两者结合上的 bug 吗?
lilei2023
2023-06-25 10:06:35 +08:00
@theprimone 是可以设置,但设置了太小的话,一旦开太多的项目,就会卡死!我后来索性就放开了
mdn
2023-06-25 10:17:02 +08:00
我的 mbp 的性能比较差,目前在用 vscode ssh 开发,有几个问题,wsl 应该也存在
1. 不擅长开发需要 GUI 的应用,比如 playwright ,只能 headless 启动
2. 开发微信小程序也比较困难
theprimone
2023-06-25 10:44:35 +08:00
@lilei2023 跟我一样,我也设置过,发现不如不设置
Moha
2023-06-25 10:46:00 +08:00
@theprimone #24 当然是有的,不过之前经历过 Linux 的各种问题,解决的比较快。也可能是因为我还没有用的那么深,基本使用还是非常香的
theprimone
2023-06-25 10:46:39 +08:00
@mdn WSL 2 支持 GUI 了,之前用 puppeteer 控制 GUI Chrome 还凑活,微信小程序好像是不太行?没试过 😂
tairan2006
2023-06-25 11:11:49 +08:00
前后端都写过,前端确实还是 mac 不折腾。

后端就算了,很多三方库都没 arm 的动态链接库…直接用 linux 最简单,wsl 勉强能用。
phiysng
2023-06-25 11:28:46 +08:00
@Routeros 你正常开启 WSL 就有概率碰到这个问题,看你会不会恰好使用到 Hyper-V 保留的端口。我在多台 Windows PC 上都遇到过这个问题。

这个端口似乎是 Windows 启动后一段时间才被保留,刚开机是可以使用的。
phiysng
2023-06-25 11:31:22 +08:00
@theprimone 一开始不知道啊😂,一般遇到端口绑定失败第一反应是 netstat 看一眼哪个进程已经占据了端口。
linhua
2023-06-25 11:43:12 +08:00
@phiysng
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384

https://zhaoji.wang/solve-the-problem-of-windows-10-ports-being-randomly-reserved-occupied-by-hyper-v/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX