惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
博客园_首页
量子位
Jina AI
Jina AI
S
SegmentFault 最新的问题
IT之家
IT之家
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
S
Securelist
Google Online Security Blog
Google Online Security Blog
P
Privacy International News Feed
博客园 - Franky
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
C
Cisco Blogs
V
Vulnerabilities – Threatpost
腾讯CDC
The Hacker News
The Hacker News
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
Scott Helme
Scott Helme
B
Blog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

魔帆博客

Python包管理的血泪史:从混乱到秩序的漫长征 | 魔帆博客 Mac mini + iPad 随航梦幻联动!零显示器配置指南,iPad 秒变 Mac 主屏幕 | 魔帆博客 日文中的衬线、非衬线混排 | 魔帆博客 使用 GNU/Linux 搭建多出口软路由 | 魔帆博客 网页排版中的字体衬线 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客 Windows 注册表编辑或清除多显示器配置 | 魔帆博客 Git 合并本地两个不同的 Repo 仓库 | 魔帆博客 【记录】使用Golang开发腾讯云函数踩的坑 | 魔帆博客 Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 【笔记】Hydro二次开发总结 前端篇(一) | 魔帆博客 C/C++ 二叉树 | 魔帆博客 Linux 报错Certificate verification failed: The certificate is NOT trusted. | 魔帆博客 Python 数字大小写转换 | 魔帆博客 安装有 RootMagiskXposedPlay 的 WSA 安卓子系统 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 教程:如何更新安装 docker-compose V2 和使用 docker switch | 魔帆博客 Windows10 系统盘开启 Bitlocker | 魔帆博客
配置和使用 Windows Dev Drive 开发驱动器 | 魔帆博客
Super Paxxs · 2024-04-13 · via 魔帆博客

开启你的 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,真就开局一堆坑,第一次上手就碰到了一些很烦的:

由于现在它不遵守全局配置文件,只好通过设置环境变量(还好它不选择忽视):

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"