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

推荐订阅源

T
Tenable Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Vulnerabilities – Threatpost
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
MyScale Blog
MyScale Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LINUX DO - 最新话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Cloudflare Blog
美团技术团队
Recorded Future
Recorded Future
T
Tailwind CSS Blog
Latest news
Latest news
Security Archives - TechRepublic
Security Archives - TechRepublic
Security Latest
Security Latest
Know Your Adversary
Know Your Adversary
Cloudbric
Cloudbric
Schneier on Security
Schneier on Security
I
Intezer
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
云风的 BLOG
云风的 BLOG
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
L
LangChain Blog
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
L
Lohrmann on Cybersecurity
S
SegmentFault 最新的问题
W
WeLiveSecurity
C
Cybersecurity and Infrastructure Security Agency CISA
S
Securelist
SecWiki News
SecWiki News
V2EX - 技术
V2EX - 技术
IT之家
IT之家
Cyberwarzone
Cyberwarzone
F
Full Disclosure
Spread Privacy
Spread Privacy
阮一峰的网络日志
阮一峰的网络日志

折腾不停 – 魔帆博客

Python包管理的血泪史:从混乱到秩序的漫长征 | 魔帆博客 使用 GNU/Linux 搭建多出口软路由 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 教程:如何更新安装 docker-compose V2 和使用 docker switch | 魔帆博客 Windows10 系统盘开启 Bitlocker | 魔帆博客 2022 年 Android 下的安卓浏览器使用指北-Firefox向 | 魔帆博客 Docker WSL1/2 迁移 Linux 发行版目录 | 魔帆博客 Spotify 主题 spicetify-fluent - 微软 win11 风格美化 | 魔帆博客 双重验证 Authy 导出所有 TOTP token 和 golang 配置 GOPROXY 解决网络问题 | 魔帆博客 powershll 像 bash 一样为单个命令设置临时环境变量 | 魔帆博客 Linux 教程:Linux 初学者必了解的概念 | 魔帆博客 安卓电池充电保护-智能充电/温控切断(Root方案) | 魔帆博客 备用机养成方案 - Tasker 安卓短信转发到 telegram | 魔帆博客 VS Code C/C++ 环境配置 | 魔帆博客 创建支持安全启动(Secure Boot)的 Arch Linux ISO 安装镜像 | 魔帆博客 使用 Aria2 搭建离线下载服务器 | 魔帆博客 微信小程序健康打卡自动填报程序-使用 Fiddler 抓包 | 魔帆博客
配置和使用 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"