Link 规则
规则
- 如果有
$home,替换为$scoopdir\persist\abgox.abyss - 否则将盘符替换为
$scoopdir\persist\abgox.abyss
TIP
为什么不沿用 Scoop 的单应用目录规范?
- Scoop 的
persist规范是每个应用一个独立目录(persist\<app>),它假设了两个前提:- 数据在安装目录中
- 数据只属于这一个应用
- 而
link指定的是标准数据路径- 它们本应该存储在 Windows 的标准数据目录下
- 它们是中心化的,不存在数据隔离
persist规范导致了数据结构不对等,在设计上与link冲突
- 标准数据目录下的数据只是理论上属于单个应用
- 在中心化的结构下,天然支持多个应用读写同一份数据
- 是否跨应用读写由应用本身决定,而不由 Scoop 通过数据隔离强行限制
- 它们本应该存储在 Windows 的标准数据目录下
示例
- Microsoft.VisualStudioCode 的数据目录是
$env:AppData\Code和$home\.vscode$home\AppData\Roaming\Code=>$scoopdir\persist\abgox.abyss\AppData\Roaming\Code$home\.vscode=>$scoopdir\persist\abgox.abyss\.vscode
- 而在 abyss 的清单定义中,它直接使用以下方式去定义json
"link": [ "$env:AppData\\Code", "$home\\.vscode" ], - abyss 只需要你告诉它,哪些目录是数据目录即可,不需要也不应该去指定目标目录
- 这确保了数据持久化的统一性,也降低了手动定义目录结构的错误风险和心智负担