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

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
Jina AI
Jina AI
Stack Overflow Blog
Stack Overflow Blog
量子位
博客园_首页
Vercel News
Vercel News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Forbes - Security
Forbes - Security
IT之家
IT之家
N
News and Events Feed by Topic
S
Security Affairs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Webroot Blog
Webroot Blog
Recorded Future
Recorded Future
L
LangChain Blog
Y
Y Combinator Blog
AI
AI
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google Online Security Blog
Google Online Security Blog
V2EX - 技术
V2EX - 技术
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
I
Intezer
T
Tenable Blog
G
Google Developers Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Troy Hunt's Blog
L
LINUX DO - 最新话题
云风的 BLOG
云风的 BLOG
C
CXSECURITY Database RSS Feed - CXSecurity.com
有赞技术团队
有赞技术团队
O
OpenAI News
P
Proofpoint News Feed
TaoSecurity Blog
TaoSecurity Blog
C
Check Point Blog
Last Week in AI
Last Week in AI
S
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
Blog — PlanetScale
Blog — PlanetScale

技术教程 – 魔帆博客

Mac mini + iPad 随航梦幻联动!零显示器配置指南,iPad 秒变 Mac 主屏幕 | 魔帆博客 使用 GNU/Linux 搭建多出口软路由 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客 Windows 注册表编辑或清除多显示器配置 | 魔帆博客 Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 Linux 报错Certificate verification failed: The certificate is NOT trusted. | 魔帆博客 安装有 RootMagiskXposedPlay 的 WSA 安卓子系统 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 教程:如何更新安装 docker-compose V2 和使用 docker switch | 魔帆博客 Windows10 系统盘开启 Bitlocker | 魔帆博客 2022 年 Android 下的安卓浏览器使用指北-Firefox向 | 魔帆博客 Docker WSL1/2 迁移 Linux 发行版目录 | 魔帆博客 Spotify 主题 spicetify-fluent - 微软 win11 风格美化 | 魔帆博客 WSA 安卓子系统 adb 提示 cannot connect the target machine actively refused it 10061 | 魔帆博客 双重验证 Authy 导出所有 TOTP token 和 golang 配置 GOPROXY 解决网络问题 | 魔帆博客 powershll 像 bash 一样为单个命令设置临时环境变量 | 魔帆博客 Linux 教程:Linux 初学者必了解的概念 | 魔帆博客 安卓电池充电保护-智能充电/温控切断(Root方案) | 魔帆博客
配置和使用 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"