Windows 怎么开发配置环境来着, WSL 好像没啥用啊

2022-01-25 10:31:00 +08:00
 pupboss
机缘巧合周末搞了台 Windows 台式机,体验了一波发现响应速度都超级快,不管是浏览器还是办公套件,于是萌生了用 Windows 做开发机的念头

但是我现在没搞明白 WSL 存在的意义,我举一个场景比如 nodejs 开发

宿主机的 sublime 或者 vscode 或者 Git GUI 如果想正常使用,得在宿主机装一套 sshd nodejs eslint 这类工具,好像就没 WSL 什么事了

如果说有的程序需要 Linux 环境,ok 我用 vscode remote wsl 插件连接到 WSL ,使用 WSL 里面的开发环境,但是 WSL 挂载 git 的时候,文件权限全部 777 ,也是很影响使用

文件权限问题,实在不行我把代码放在 WSL 内部,也能忍,但是和宿主机文件传输好 jb 慢啊,5 分钟传不完 200M 的碎文件

传输慢也就还能忍,大不了全部放在 WSL 里面,但是我的工作区是用 syncthing 同步的,WSL 安装完发现 systemctl 不能用

systemctl 不能用我也认了,大不了每次手动启动 syncthing ,但是启动完发现 WSL 的端口只能在 localhost 访问,而 NAS 连不上,或者说需要额外配置才能连上

可如果我在宿主机同步 syncthing ,就又会遇到 git 文件权限 777 问题,完美循环了

所以想请教下各位,Windows 下舒服的开发姿势是什么样的,WSL 一把梭,还是宿主机一把梭,还是有什么奇巧淫技
8292 次点击
所在节点    程序员
77 条回复
dobelee
2022-01-25 13:02:11 +08:00
不懂前端,不清楚为什么要用 wsl 。反正服务端表示真香。
XTTX
2022-01-25 13:21:52 +08:00
@murmur #39 我碰到一个窘境,node-sass 需要 node-gyp ,node-gyp 又有一大堆依赖,同时还不支持 node 15 往上。 最直接的方式就是弄个 docker image, 把代码考进去,每次跑容器就好了

```dockerfile
FROM node:14-alpine as base
ENV HOME=/home/node
RUN apk add --no-cache python3 make g++ && \
yarn global add node-gyp@${VERSION} && \
yarn cache clean && \
node-gyp help && \
mkdir $HOME/.cache && \
chown -R node:node $HOME
USER node
VOLUME $HOME/.cache
WORKDIR $HOME
CMD ["sh"]

FROM base
WORKDIR /frontend
COPY package.json package.json
RUN yarn install
COPY . .
CMD ["npm", "start"]
```

现在流行 ship with environment 不是没有理由的, 越来越多的版本和各式各样的依赖,只要一个不对口,整个项目就跑不起来
oott123
2022-01-25 13:23:03 +08:00
murmur
2022-01-25 13:24:58 +08:00
@hyq
@XTTX

想起来了,我记得有个 cpu-features 的库,从来就没编译成功过,好像也没啥
XTTX
2022-01-25 13:26:00 +08:00
@gadfly3173 #29 我个人还是喜欢用 docker 去搞那些乱七八杂的环境,个人喜好吧
nba2k9
2022-01-25 13:30:20 +08:00
能在 Windows 配置的开发环境,感觉没必要迁移到 wsl ,平白无故要踩一些坑
XTTX
2022-01-25 13:31:35 +08:00
@murmur #44 以后的依赖库越来越复杂,版本越来越多,需要的环境也不一样,还可能出现库在网上消失和“被消失”。 严谨一些的 Golang 项目都把所有 import 在本地留一份。 所以我挺喜欢 docker 跑别人的项目, 不用担心我自己的环境被搞得乱七八杂的
pupboss
2022-01-25 13:48:03 +08:00
@oott123 条理清楚,方案可行,尤其是 「基于某种“不想在宿主机上安装开发环境”的奇怪洁癖矫情」就像是被偷窥了,晚上我就抄作业
forbreak
2022-01-25 13:53:48 +08:00
我主要用就是,WSL 跑 docker ,然后用 docker 跑各种开发数据库安装卸载都很方便,无残留。 其他的 idea 提供的 wsl 的一些支持啥的都很弱,还有些问题,内存占用也太高,基本没法用。
dcsuibian
2022-01-25 13:55:02 +08:00
不用 WSL ,就直接用宿主机就好。毕竟 wsl 还是远程开发范畴,而且还有各种问题。

我个人的经验:
1 、配置好系统代理和命令行代理,代理比各种换源方便太多
2 、用 winget 装软件(虽然比较新,但不少软件都有),部分软件自己去官网下载安装
3 、调整应用设置。chrome 、vscode 的同步功能很强(插件数据不太行),jetbrain 系有同步功能但比较弱。
4 、把文件放在家目录下,这样更通用,能省不少麻烦。
5 、用坚果云或其它同步工具同步一些附加的资源文件,如果有需要,配置一个类似于 NUTSTORE_FILES 的环境变量指向对应文件夹。
6 、写一个文档,记录一下配置过程,以备不时之需。

其实上面这个步骤在其它操作系统上也差不多,windows 需要做一些对应的调整而已。
theprimone
2022-01-25 13:55:10 +08:00
我就是只在 WSL 开发的前端 [doge] WSL 里全放代码相关的各种东西,Windows 基本没有代码相关的东西,两边隔离的感觉针不戳。

如果项目真有可视化需求,之前在 WSL 里折腾 electron 没搞成功,不知道现在如何了,有需求再看。
xz410236056
2022-01-25 14:01:52 +08:00
winget 请, 装 IDE 跟着提示点点点就自动装好了,2021 了不用那么麻烦自己手动配置了
pupboss
2022-01-25 14:04:52 +08:00
@forbreak
@theprimone 楼上 oott123 老哥分享了自己的博客,WSL 好像现在支持图形界面了,把 vscode 这类软件装进去估计也针不戳,有时间可以折腾下
pupboss
2022-01-25 14:07:38 +08:00
@dcsuibian 没错的,宿主机肯定还是最方便
jagger2048
2022-01-25 14:22:04 +08:00
核心问题还是 WSL 的 777 问题,这个可以参考这个解决方案:

https://www.yuque.com/docs/share/30bbd704-4e6a-4386-93c8-577a104be557?# 《 WSL 中对文件权限进行设置》

windows 开发一般用 VSCODE remote 来搭配 WSL ,远程宿主机来使用,这样对 windows 的配置没太多的要求
chenmobuys
2022-01-25 14:26:51 +08:00
WSL 总会碰到一些奇怪的问题,我选择用虚拟机装 linux
itechnology
2022-01-25 14:34:41 +08:00
我个人看法是没必要为了用 WSL 而用 WSL ,现在用 Windows 已经很方便了,不过都是个人的选择,觉得 WSL 好用就用 WSL
duke807
2022-01-25 14:44:37 +08:00
最大的意義是:對於 linux 用戶來說,以後寫跨平台軟件可以忽略 windows 了,windows 用戶請自行使用 wsl 運行 linux 程序,反正 windows 用戶不怕麻煩
hejw19970413
2022-01-25 15:42:53 +08:00
wsl 这个东西好像 开起来 关不掉~
theprimone
2022-01-25 15:45:22 +08:00
@pupboss 大概浏览了一下,没有讨论图形化的吧?反正记得 WSL 好像有这个计划

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

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

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

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

© 2021 V2EX