我已经为VS代码编写了语言服务器扩展。为了缩短启动时间,我想缓存一些全局状态。我正在努力寻找一个安全的,对用户透明的位置。
我发现了以下四个选项,但似乎都不合适:
ExtensionContext.extensionPath
:这几乎是完美的。对用户而言,安全的沙箱空间是显而易见的。但是,它在扩展程序更新时已消失。ExtensionContext.storagePath
:这不是全局的,用户很难清除,因此很快就会使用GB的存储空间。ExtensionContext.globalState
:将300MB的二进制数据放入JSON字典存储似乎很糟糕。%UserData%
/ linux / OSX等效项:我宁愿避免在不受控制的常规用户空间中添加和删除文件。在何处存储此数据?
答案 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