如何检测VS Code扩展新版本首次加载并执行操作
实现VS Code扩展新版本首次加载触发操作的方案
目前VS Code官方没有直接提供检测新版本首次运行的内置属性(旧代码中的firstTimeUse已被移除),但可以通过插件上下文的存储API实现需求,以下是具体方案:
核心思路
利用ExtensionContext.globalState或workspaceState存储插件已运行的版本,每次激活插件时对比当前版本与存储版本:
- 存储版本为空 → 插件首次安装运行
- 存储版本≠当前版本 → 新版本首次运行
- 执行目标操作后,更新存储的版本号
具体实现代码
import * as vscode from 'vscode'; export function activate(context: vscode.ExtensionContext) { // 读取插件当前版本 const packageJson = require(context.extensionPath + '/package.json'); const currentVersion = packageJson.version; // 从全局状态获取已记录的版本 const storedVersion = context.globalState.get<string>('extensionLastRunVersion'); // 判断是否为新版本首次运行 if (storedVersion !== currentVersion) { // 执行自定义操作,比如显示更新提示、初始化配置等 vscode.window.showInformationMessage(`欢迎使用插件新版本 v${currentVersion}!`); // 更新全局状态中的版本号,避免重复触发 context.globalState.update('extensionLastRunVersion', currentVersion); } // 其他插件业务逻辑... }
关键细节说明
globalState:数据对当前用户的所有工作区生效,适合全局初始化操作workspaceState:数据仅对当前工作区生效,适合工作区专属的初始化逻辑- 直接从
package.json读取版本号,确保与发布的插件版本完全一致
内容的提问来源于stack exchange,提问作者Peter Wone
相关产品推荐
相关产品推荐

