开启你的 Dev Drive 之旅
Dev Drive(开发驱动器,aka 开发者硬盘)
微软在 Windows 11 中推出了一项革命性(旧活新整)的新功能——Dev Drive。这不仅仅是一个普通的存储卷,它是专为编码和项目管理而设计的,采用了基于写时复制(Copy-on-Write, COW)的 ReFS 文件系统。简单来说,如果你有两份相同的文件,其实只有一份真正存储在磁盘上。另一份只不过是指向第一份的链接。当你对这个链接文件进行修改时,原始数据才会被复制,从而大大加快了重复数据的写入速度。
根据微软官方文档的描述,Dev Drive 主要用途如下:
- 源代码库和项目文件
- 软件包缓存
- 构建输出和中间文件
但是,Dev Drive 不适合用于存储开发工具,如 Visual Studio、MSBuild、.NET SDK 等,这些应当放在主 C:\ 驱动器上。
所以我们在 Dev Drive 上新建如下目录来存放我们的东西:
- packages: 存放缓存
- go
- pnpm
- bun
- ...
- github.com: 源代码文件目录
来吧,接下来让我们看看如何在 Dev Drive 上折腾各种开发工具的配置——因为显然,没有什么是不能通过增加一些配置来解决的,如果有,那就再加几个环境变量!😉
配置 go 以适配开发驱动器 dev drive
哦,亲爱的 Go,别担心,我们不会让你搬家到 Dev Drive,我们只是搬走了你的活动空间
我们不应该把 Golang 本身安装到 dev Drive 上,所以只需要告诉 Go 把模块缓存放在那即可,要做到这一点,方法很简单:
go env -w GOPATH=H:\packages\go
go env -w GOCACHE=H:\packages\go\go-build
配置 npm、pip、rust、java 以适配开发驱动器 dev drive
这里微软文档中详细写了,我就直接简单说如何配置了。
Npm cache (NodeJS)
添加一个全局环境变量:
npm_config_cache = H:\packages\npm
如果你之前使用过 npm,那么 npm 在你系统里是本来就会有一些缓存的,默认在存储在 %AppData%\npm-cache
,把这里面的内容都移动到新位置中。下面的处理方式和这里的一样。
Cargo cache (Rust)
添加一个全局环境变量:
CARGO_HOME = H:\packages\cargo
默认位置在 %USERPROFILE%\.cargo
Pip cache (Python)
添加一个全局环境变量:
PIP_CACHE_DIR = H:\packages\pip
默认位置在 %LocalAppData%\pip\Cache
Java cache
- 配置 gradle: 添加一个全局环境变量:
GRADLE_USER_HOME = H:\packages\gradle
默认位置在 %USERPROFILE%\.gradle
- 配置 Maven
MAVEN_OPTS = -Dmaven.repo.local=H:\packages\maven %MAVEN_OPTS%
默认位置在 %USERPROFILE%\.m2
配置 pnpm 以适配开发驱动器 dev drive
创建内容如下的一个全局配置文件:~\.npmrc
store-dir=H:\packages\pnpm\store
cache-dir=H:\packages\pnpm\cache
package-import-method=clone
配置 bun 以适配 dev Drive
谈谈 Bun:这个顽皮的小家伙
现在先让我们来聊聊(吐槽) Bun,这个在开发社区引起不小波澜的新成员。虽然 Bun 承诺提供更快的 JavaScript 工具链体验,但我的天哪,它真的给我们准备了一些“惊喜”:
- 完全无视我们设置的全局配置文件。
- 忽略指定的缓存路径,这不是调皮是什么?
- 在 Windows 上,如果你敢设置代理环境变量,Bun 就跟你玩失联。
所以目前在中国建议晚点再入手 bun ,虽然支持 Windows,真就开局一堆坑,第一次上手就碰到了一些很烦的:
- 不遵守全局配置文件 · Issue #5636 · oven-sh/bun
- 完全忽略你指定的缓存路径 · Issue #6423 · oven-sh/bun
- Windows 下如果你设置了代理的环境变量,则什么也下载不了
由于现在它不遵守全局配置文件,只好通过设置环境变量(还好它不选择忽视):
BUN_INSTALL_CACHE_DIR=H:\packages\bun\cache
BUN_INSTALL_GLOBAL_DIR=H:\packages\bun\global
BUN_INSTALL_BIN=H:\packages\bun\bin
当然也可以添加上全局配置文件,万一修好了呢:~/.bunfig.toml
Windows的路径解析bug修了的:Fixes #9851 · Pull Request #9886 · oven-sh/bun (github.com)
[install.cache]
# the directory to use for the cache
dir = "H:\\packages\\bun\\cache"
[install]
# where `bun install --global` installs packages
globalDir = "H:\\packages\\bun\\global"
# where globally-installed package bins are linked
globalBinDir = "H:\\packages\\bun\\bin"
# set default registry as a string
registry = "https://registry.npmmirror.com"
发表回复