跳到主要内容

env、extensions 与状态存储

vscode.env​

运行环境,只读信息居多。

成员作用
appName应用名,例如 Visual Studio Code
appRoot应用安装目录
language界面语言,例如 zh-cn
machineId / sessionId机器和本次会话标识。不要当成用户账号
remoteName远程类型。本地窗口是 undefined
uiKindUIKind.Desktop 或 UIKind.Web
shell默认终端 shell。有 onDidChangeShell
uriSchemevscode 或 vscode-insiders
clipboard读写剪贴板
openExternal用系统打开 http、mailto 等
asExternalUri把 Uri 变成当前环境下可从外部打开的地址。端口转发时要用它

日志级别相关:logLevel、onDidChangeLogLevel。遥测:isTelemetryEnabled、onDidChangeTelemetryEnabled。

vscode.extensions​

成员作用
getExtension(id)按 publisher.name 取扩展。未安装则是 undefined
all当前已知扩展
onDidChange安装、卸载、启用变化

Extension<T> 上有 id、extensionUri、extensionPath、isActive、packageJSON、exports。activate() 会保证对方已激活并返回它的导出。读取别的扩展的 exports 前要先激活,否则是 undefined。

extensionUri 比 extensionPath 更适合网页和远程。

ExtensionContext​

activate 的参数。

成员作用
subscriptions停用时统一释放
extensionUri / extensionPath扩展安装位置
globalState / workspaceStateMemento。全局跨工作区,工作区只在当前工作区
secretsSecretStorage,存令牌。不要把令牌放进 globalState
extensionModeProduction、Development、Test
logUri / storageUri / globalStorageUri日志和存储目录。没有工作区时 storageUri 可能是 undefined
environmentVariableCollection让之后新开的终端带上环境变量

Memento.get / update / keys。update 传 undefined 表示删掉该键。状态是给扩展自己的小数据,不是给用户看的设置。设置走 contributes.configuration。

参考​