在哪里存储 vscode 扩展的全局二进制数据

Tho*_*oby 9 visual-studio-code vscode-extensions

我为 VS 代码编写了一个语言服务器扩展。为了缩短启动时间,我想缓存一些全局状态。我正在努力寻找一个安全的、用户透明的位置。

  • 缓存在所有工作区之间共享
  • 它由 200-300MB 的序列化数据组成
  • 它应该在扩展更新之间保持不变
  • 扩展是跨平台的

我发现了以下四个选项,但似乎都不合适:

  1. ExtensionContext.extensionPath: 这几乎是完美的。对用户显而易见,安全的沙盒空间。但是,它在扩展更新时被擦除。
  2. ExtensionContext.storagePath:这不是全局的,用户很难清除,因此很快就会使用 GB 的存储空间。
  3. ExtensionContext.globalState:将 300MB 的二进制数据放入 JSON 字典存储似乎很糟糕。
  4. %UserData%/linux/OSX 等效项:在不受控制的一般用户空间中添加和删除文件是我宁愿避免的风险。

存储这些数据的合适位置在哪里?

Tho*_*oby 7

增加了 2019 年 1 月发布的 VS Code ExtensionContext.globalStoragePath,这是VS Code的全球版本storagePath

扩展可以在其中存储全局状态的绝对文件路径。该目录可能不存在于磁盘上,创建取决于扩展。但是,父目录保证存在。

https://code.visualstudio.com/updates/v1_31#_global-storage-path