已经装了一个 ubuntu18.04 。
在 ubuntu18 上,用 vue-cli 新建了一个项目,然后在本机用 sublime text3 和 vscode 打开,对其中的文件进行编辑,保存后,不会自动更新。甚至,重启项目也是不能刷新视图。
那么,到底在 wsl 中建项目,在 windows 下编辑文件这样的开发方式,可行不可行?
windows 上用 wsl 辅助前端开发确实是可行的。
应用商店安装一个 linux 子系统后,重启,就能用了。可以用 shift + 右键 打开 linux shell,也可以使用 其他 shell 工具进入。
然后在 linux cd 到 /mnt/ 下就是挂载的各种盘,进去即可。然后像一般的 linux 开发就好了。
1
lithiumii 2019-01-25 11:45:24 +08:00
很多东西 WSL 用不了( e.g., FUSE, MongoDB,当然 MongoDB 完全可以用 Windows 版),毕竟不是一个完整的系统。所以说能不能做开发还是看你到底在开发什么。
|
2
FakeLeung OP @lithiumii #1
因为 windows 下的环境太操蛋了,比如 git ssh 什么的。 所以想着,在 wsl 下新建项目,在 windows 下编辑。同时在 wsl 下进行 git ssh sed 等操作。 ps:linux 虚拟机,分配 8g 内存跑个 vscode 就卡爆,不知道为啥。 |
3
treblex 2019-01-25 11:49:58 +08:00 via Android
nodejs 项目的话,可行
|
4
EridanusSora 2019-01-25 11:50:31 +08:00 via Android
你看下 console 有没报错?可能他 hot reload 走了 192 那个地址..
|
5
FakeLeung OP @suke971219 现在 vue cli 貌似不行。
|
6
FakeLeung OP @EridanusSora 没有噢。看截图。
|
7
agdhole 2019-01-25 11:51:28 +08:00 via Android
要在共享目录 mnt 下编辑
|
8
wly19960911 2019-01-25 11:52:27 +08:00 via Android
@FakeLeung vue-cli 一直可以,我一直是前端项目用 wsl 处理
|
9
lithiumii 2019-01-25 11:53:35 +08:00
@FakeLeung Powershell 早就能完美 Git 和 SSH 了吧,虽然我日常也是用 WSL 搞这些。话说微软是明确反对你直接用 Windows 侧的软件修改 WSL 下的文件的(但是反过来可以),因为文件系统不一样可能出问题.
https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/ |
10
wly19960911 2019-01-25 11:54:15 +08:00 via Android
但是我发现一个问题是,有时候修改不会立即 watch 到重新编译,但是我 angular 一直没问题(我是 angular 开发)。所以好奇为什么 vue 会这样,但是大部分情况没问题
|
11
FakeLeung OP @lithiumii #9
唉,反正我的 ps 不知道为啥,一直提示我 git node 不存在,不能直接使用。即使能用,推到 gitlab 也是 permission denied。即使我加入了 key。 |
12
chungzhao 2019-01-25 12:02:49 +08:00
Windows 侧好像不能修改 wsl 那边的文件的,只能 wsl 修改 wsl 的。
|
13
laogui 2019-01-25 12:04:54 +08:00 via Android
用了好几年了,前后端都没问题,node,MySQL,php,go 这些都统统装在 wsl 里。要用自动挂载的 mnt 目录。
|
14
johnniang 2019-01-25 12:05:49 +08:00 via Android
似乎需要装一个 vue-load 插件
|
15
geelaw 2019-01-25 12:06:17 +08:00 13
你不能这样做,因为你不应该透过 Win32 访问 WSL 的文件系统,因为 Win32 程序根本不会知道 WSL 是什么,这样做可能会损坏 WSL 的文件系统,而 WSL 也并不期待自己的文件系统被别的程序乱动。
你可以在 WSL 里面的 /mnt/C/Users/你的用户名 /Documents/project1 里面运行你喜欢的 Linux 工具,也就是说,你可以在 WSL 里面通过 Linux Subsystem 访问 Win32 控制的部分(因为 WSL 使用的 NTFS 更底层、更少抽象,不像 Win32 app 不需要知道底层文件系统,WSL 永远运行在 NTFS 上),WSL 是知道这部分文件系统通常归 Win32 使用,所以能够处理其中的变化。 除了从技术实现层面的“是否感知”来理解这个问题,你还可以通过“独立存储”这个概念来理解这个问题,算是更抽象的一种理解(从软件模型的基本假设开始)。 WSL 的实现是一个 Appx Package,它的独立存储(例如你正在访问的 %USERPROFILE%\AppData\Local\Packages\<PackageFamilyName>\LocalState 是完全属于这个 Appx Package 的,Appx Package 应当假设没有任何人修改这部分文件。换言之,即使你尝试编辑一个 UWP app 或者通过 Store 分发的 Win32 app 的这个文件夹,也会导致 undefined behavior,因为所有的 Appx Package 都是基于“我的独立存储是我自己控制的”这个假设来编写和运行的。 再类比一下的话,考虑 Word,它会存储一些设置在 AppData 文件夹里面,也会允许用户把文档保存在 Documents 里面。Word 的编写和运行是基于“用户不能乱动我的 AppData ”这个假设的,因此用户不能动它的 AppData,如果用户胡乱剪切、粘贴 AppData 里面的文件,那么 Word 可能崩溃或者恢复出厂设置,用户如果把 AppData 从一台电脑复制到另一台电脑,Word 不保证这些内容对应的效果在另一台电脑上是有效的。但是它并不假设“用户不能动自己的 Documents ”,所以你的文档保存在 Documents 里面,你可以随便移动、复制你的文档,Word 仍然可以打开移动过的、复制过的文档,你可以把文档发送到另一台电脑,那么另一台电脑的 Word 也必须可以打开收到的文件。 用 WSL 在 WSL 的 /Users/WSLUserName/Documents 里面建立文件,再用 Win32 app 去访问 %USERPROFILE%\AppData\Local\Packages\<WSLPackageFamilyName>\LocalState\rootfs\Users\WSLUserName\Documents,就相当于乱动 Word 的 AppData,WSL 不需要处理这种情况。 用 WSL 在 WSL 的 /mnt/C/Users/WindowsUserName/Documents 里面建立文件,再用 Win32 app 去访问 C:\Users\WindowsUserName\Documents 里面的文件,就相当于用户操作自己的“我的文档”里面的文件,例如把文件复制到另一台电脑上修改再复制回来,WSL 当然应该正确处理。 |
16
johnniang 2019-01-25 12:06:39 +08:00 via Android
|
17
wly19960911 2019-01-25 12:08:41 +08:00 via Android
|
18
chaleaochexist 2019-01-25 12:14:52 +08:00
python 不行. 解释器不可执行.
|
19
GenkunAbe 2019-01-25 12:20:59 +08:00 via Android 1
直接在 wsl 下创建软链接到一个 Windows 下方便访问的目录(比如简单点就是桌面:ln -s /mnt/c/users/xxx/Desktop ~/Desktop),就不会出现这样的问题了。
|
20
hisune 2019-01-25 12:35:34 +08:00
我就是后端所有环境放 wsl,php+nginx+mysql+redis+mongo+node,用了 1 年多了,开机自启动,感觉用起来很爽
|
21
OhYee 2019-01-25 13:05:39 +08:00
亲测可行,感觉是你的某些操作导致了别的问题,建议给出更详细的信息
|
22
FakeLeung OP @johnniang #14
这个 cli 自带的。 @wly19960911 #17 3emmmmm 是的。。。 @OhYee #21 其实就是,在 wsl 中 mkdir 了一个文件夹,然后在 windows 下编辑这个文件夹中的内容。 @geelaw #15 好,我试试 wsl 跑 windows 下的文件。 |
23
20015jjw 2019-01-25 14:17:59 +08:00 via Android
别跟自己过不去 有钱 mac 没钱黑苹果 /Ubuntu
|
24
cholerae 2019-01-25 14:28:32 +08:00
稍微底层点的代码,如果测试出了问题,怎么确定是 wsl 的 bug 还是自己代码的 bug ?
|
25
johnniang 2019-01-25 14:34:57 +08:00 via Android
@FakeLeung 能检查一下 package.json 中是否有 vue-loader vue-template-compiler 么
|
26
FakeLeung OP |
27
wangxinpier 2019-01-25 15:42:47 +08:00
wls 我之前想用他玩 docker,测试后,一有些问题总是解决不了,还是放弃了,偶尔尝试一下可以,出了问题,想解决就可能比较难搞了。
|
28
hmzt 2019-01-25 16:43:55 +08:00
windows 下编辑?如果你只想要图形界面的话,装个图形界面不就好了
|
29
Rafoluk 2019-01-25 18:58:57 +08:00
不能用 windows 编辑 wsl 文件的,要么两边都操作操作 windows 的文件(/mnt),要么直接在 wsl 安装 linux 版的编辑器
|
30
mmdsun 2019-01-25 19:24:15 +08:00 via Android
java 测试环境,乌班图 wsl。只是 wsl IO 有点差。建议用 hyper-v
|
31
vanishcode 2019-01-25 19:24:54 +08:00 via Android
太监子系统。。。。
|
32
mmdsun 2019-01-25 19:25:18 +08:00 via Android
wsl 访问 win 目录 加 /mnt 就行。完全没问题
|
33
libook 2019-01-25 19:47:00 +08:00 via Android 1
我是在 win 下装 xserver,然后 wsl 连 win 下的 xserver 展示图形界面。理论上可以用 xserver 在 wsl 下用 IDE 开发。
|
34
libook 2019-01-25 19:53:39 +08:00 via Android 1
watch 和 git 的追踪功能都是用操作系统的 API 实现的,wsl 和 win 还是两个操作系统,各自有各自的 API 来实现监听文件修改的功能,又因为 wsl 运行于 win 之上,所以 wsl 内修改文件的时候 win 是知道的,但 win 修改文件 wsl 是无法知道的。
|
37
rawidn 2019-01-25 23:34:53 +08:00 via Android
wsl io 性能太差了,跟正常的 linux 根本不是一个量级
|
38
huclengyue 2019-01-25 23:39:16 +08:00 via Android
@libook 之前这么想过,但是没这么干过。这么干会有明显的性能问题吗
|
39
koodai 2019-01-25 23:54:52 +08:00 via iPhone
python3 使用 notebook 做数据分析,配合 excel,PowerPoint 这些生产力工具,简直舒服的想呻吟出来。
Linux 下的 Office 套件真的没有 MS 的好用,Mac 下的 Office 更是残。 Ubuntu 下做数据,shell 里面很多指令简直高效到令人发指。 感谢 wsl 这伟大的发明! |
40
dreamtrail 2019-01-26 00:08:37 +08:00 2
超好用,以前在 windows 上面搭个开发平台是很操蛋的事情,而且环境也不同,现在变得太简单了
|
41
liprais 2019-01-26 00:43:40 +08:00 via iPhone
wsl 磁盘性能垃圾,需要把实时防病毒关了才稍微好一点
|
42
libook 2019-01-26 20:06:57 +08:00 via Android
@huclengyue 我只跑了个 terminator,没问题,个人感觉性能上不如虚拟机,如果你的 win 硬件还不错的话性能应该能忍。
我没成功启动 gnome,能折腾的话可以研究一下。启动一个 terminal emulator +一个 IDE 估计是 OK 的。 |
43
huclengyue 2019-01-26 23:50:13 +08:00 via Android
@libook 性能不如虚拟机看到这个就想放弃了🙄
|