vscode扩展的全局二进制数据存储位置

时间:2019-01-04 13:26:07

标签: visual-studio-code vscode-extensions

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

  • 所有工作区之间共享缓存
  • 它包含200-300MB的序列化数据
  • 它应该在扩展的更新之间持续存在
  • 扩展名是跨平台的

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

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

在何处存储此数据?

2 个答案:

答案 0 :(得分:0)

您可能要考虑创建在“用户设置”中定义的文件路径;我认为该解决方案可以满足您的所有要求。

您可以在package.json中设置一个默认值,它对用户是透明的-他们可以根据需要更改它。

此处有更多信息:https://code.visualstudio.com/api/references/contribution-points#contributes.configuration

答案 1 :(得分:0)

VS Code的2019年1月发行版添加了ExtensionContext.globalStoragePath,它是storagePath的全局版本

  

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

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