打造我的 Windows 开发环境
#系统环境
#新终端安装和 PowerShell 7
首先自然是全新的 Windows 终端了,颜值能力同步在线,再也不用去折腾 Cmder 类似的东西了,直接通过 windows 的应用商店安装即可。
Nerd Fonts 字体安装
终端显示图形,需要安装字体,可从Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher 选选择安装。
安装和配置 Oh My Posh
使用如下命令安装:
winget install oh-my-posh --source winget
在 Themes | Oh My Posh 中选择你喜欢的主题样式,以 grandpa-style 为例
# 打开 pwsh 的配置文件
notepad $PROFILE
# 在文件中添加以下内容
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\grandpa-style.omp.json" | Invoke-Expression
选用其他主题则自行替换上面代码中的 grandpa-style
即可。
安装并启用 posh-git
# 安装
PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
# 打开 pwsh 的配置文件
notepad $PROFILE
# 在文件中添加以下内容
Import-Module posh-git
#WSL 安装
参考官方文档安装 WSL | Microsoft Learn 逐步操作即可。
正常来说,只需要 wsl --install
即可,会默认安装 Ubuntu 系统, 如果你习惯于其他 linux 发行版,可通过 wsl -l -o
查看,然后通过 wsl install -d [发行版名称]
进行安装。
如果安装过程中出现错误,可通过https://learn.microsoft.com/zh-cn/windows/wsl/install-manual 的指南逐步安装即可。
接着可以更新下 Ubuntu 的系统环境
# 安装系统和软件更新
sudo apt update && sudo apt -y upgrade
#Docker
Windows 下 Docker 的安装也很简单, 去 Download Docker Desktop | Docker 下载运行安装包运行即可。
winget 上也提供了 Docker 的包,以下命令可直接安装。
winget install Docker.DockerDesktop --source winget
完成安装后可在设置中开启如下配置,这样就可以在 wsl 中也调用 docker 了。
#SMB
SMB(Server Message Block)服务是一种网络文件共享协议,可以很方便的共享文件。
#启用 SMB 加密
虽然都是局域网的场景,但现在家庭中的联网设备越来越多,这些设备还都和外围相连,考虑传输的安全性,我们需要打开加密特性。
使用如下为整个文件服务器启用 SMB 加密。
Set-SmbServerConfiguration –EncryptData $true
参阅 SMB 安全增强功能 | Microsoft Learn
#关闭 smbv1
上面说了开启 smb 加密,但是 smbv1 是不支持加密的,而且 smbv1 存在较多的安全漏洞,因此我们需关闭 smbv1, 同理以管理员身份开启的 pwsh 或 powershell 中执行下面命令即可。
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
# 以下为输出
FeatureName : SMB1Protocol
DisplayName : SMB 1.0/CIFS 文件共享支持
Description : 支持 SMB 1.0/CIFS 文件共享协议和计算机浏览器协议。
RestartRequired : Possible
State : Enabled
CustomProperties :
ServerComponent\Description : 支持 SMB 1.0/CIFS 文件共享协议和计算机浏览器协议。
ServerComponent\DisplayName : SMB 1.0/CIFS 文件共享支持
ServerComponent\Id : 487
ServerComponent\Type : Feature
ServerComponent\UniqueName : FS-SMB1
ServerComponent\Deploys\Update\Name : SMB1Protocol
如果 State 为 Enable 则可以通过如下命令来禁止
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
是否立即重启计算机以完成此操作?
[Y] Yes [N] No [?] Help (default is "Y"): N
Path :
Online : True
RestartNeeded : True
会提醒重启,按需立即重启或后续手工重启均可。
参阅 如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 | Microsoft Learn
#OpenSHH 安装
目前 windows 中也可以直接使用 openSHH 了,直接在可选功能中进行安装即可,路径:设置( Win + I) -> 应用 -> 可选功能,如下图:
#Git
作为开发者, Git 自然是必不可少的工具,windows 下安装 Git 除了 Git for Windows 之外,现在还可通过 winget
进行安装。
# 搜索 git
winget show git
# 输出
名称 ID 源
---------------------------
My Git 9NLVK2SL2SSP msstore
Git Git.Git winget
# 安装 git
winget install --id Git.Git -e --source winget
#PowerToys
PowerToys 真好用,谁用谁知道,以下命令可一键安装:
winget install Microsoft.PowerToys --source winget
#其他可选
- Scoop 可作为自带 winget 的补充
#开发环境
#node
#nvm
还是习惯使用 nvm 来管理 Nodejs 的版本,直接从 nvm-windows 下载安装即可。
为了高速使用,通常会配置好下载代理:
nvm node_mirror https://npmmirror.com/mirrors/node/
nvm npm_mirror https://npmmirror.com/mirrors/npm/
安装需要的 nodejs 版本
nvm install v16.16.0
#包管理
虽然改配置文件就可以切换安装源,但是当你有多个仓库源需要来回切换时,比如公司内部的源,一个更方便的切换命令就不可少了,这里我选择 nrm 来作为快速切换工具。
使用如下命令进行安装:
npm install -g nrm open@8.4.2 --registry=https://registry.npmmirror.com
至于上面为什么不直接是 npm install -g nrm
,这是因为 node 更新后很多包默认使用了 esm,nrm 的一个依赖包就只提供了 esm 模块的导出,而 nrm 中还都是 commonjs 的导入,因此出错。
此问题自 2023.03 发现,至今(2023.06.17)依然存在。但没有发现更好的工具,暂时先将就吧。
#pnpm
在 Nodejs 自带的 npm 之外,还可以用 pnpm 。 pnpm 号称速度快 2 倍,同时 node_modules 中的所有文件均在一个位置应用时大部分是软连接,还内置 Monorepo 的支持。有啥不试试的理由呢。
#go
windows 安装 go 也是直接使用官网安装包即可。
只是务必不要忘记设置 GOPROXY,否则大概率会出现各种安装失败。此处我们使用七牛云 - Goproxy.cn 服务。
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
#多版本切换
在已经安装好 go 之后,如果有使用其他版本的需求就可以使用 go install
命令来进行其他版本的安装。
# 链接安装器
go install golang.org/dl/go1.18.10@latest
# 执行下载安装
go1.18.10 download
# 测试
go1.18.10 version
这是官方的方案,但使用其他版本时命令有所变化,必须得加上版本号 go -> go1.18.10
使用起来没那么顺手。类似的还有下面两个,go 这块我也还是半罐子,就不做推荐了。
voidint/g: Golang Version Manager (github.com) 不支持 windows
#开发工具
#vscode
vscode 一个基本已经够了,官网下载安装即可, 至于配置以前有 settings sync, 现在只要登录下账号,之前的配置都可以自动同步。
#At End
每次切新设备,配置环境都需要花费不少的时间,虽然都有安装程序,但一次次点也是蛮麻烦的事情。 可以看到不少程序都在 winget 中都有提供,我在想是不是可以写个脚本,来一键完整安装。