Azure DevOps扩展插件-SDK简单介绍
最近在编写Azure DevOps扩展插件,查看了官方提供的SDK,在这里简单记录一下。
作用
客户端 SDK 使 Web 扩展能够与主机框架进行通信。它可用于:
- 通知主机扩展已加载或有错误
- 获取有关当前页面的基本上下文信息(当前用户、主机和扩展信息)
- 获取主题信息
- 获取授权令牌以在 REST 回调中使用 Azure DevOps
- 获取主机框架提供的远程服务
使用方法
导入SDK
import * as SDK from "azure-devops-extension-sdk"
初始化SDK
SDK.init();
SDK提供的方法
接口
- IExtension
Context 当前扩展的标识符 - IExtension
Init Options 扩展初始化选项——传递给 DevOps.init() - IHost
Context 当前 DevOps 主机(组织)的信息 - IUser
Context 当前用户信息
枚举
- HostType DevOps 主机级别
方法
- init(IExtension
Init Options) 启动与主机窗口的握手。 - ready() 注册一个在初始设置/握手完成后调用的回调。如果初始设置已经完成,则在当前调用堆栈的末尾调用回调。
- notify
Load Succeeded() 通知主机扩展成功加载(停止显示加载指示器) - notify
Load Failed(Error | string) 通知主机扩展加载失败 - get
Configuration() 从父框架获取初始握手中传递的配置数据 - get
Contribution Id() 获取有关首次导致此扩展加载的Contribution的信息 - get
User() 获取有关当前用户的信息 - get
Host() 获取有关页面所针对的主机(即 Azure DevOps 组织)的信息 - get
Extension Context() 获取有关拥有所托管内容的扩展程序的上下文 - get
Service<T>(string) 获取具有给定贡献 ID 的贡献。返回的贡献具有在该贡献中获取注册对象的方法。 - unregister(string) 删除此扩展向主机框架公开的对象
- get
Access Token() 获取允许调用其他 DevOps 服务的访问令牌 - get
App Token() 获取可用于识别当前用户的令牌 - resize(number, number) 请求父窗口根据当前扩展大小调整此扩展的容器大小
- apply
Theme([key: string]: string) 将主题变量应用于当前文档
其中getService方法具有强扩展性,可以进一步调用azure-devops-extension-api中的服务。下面例子是获取当前页面所关联的项目:
const projectService = await SDK.getService<IProjectPageService>(CommonServiceIds.ProjectPageService);
const project = await projectService.getProject();
通过往getService()方法中传入CommonServiceIds来获取相应的服务,以下枚举出了所有CommonServiceIds。
/**
* Contribution ids of core DevOps services which can be obtained from DevOps.getService
*/
export declare const enum CommonServiceIds {
/**
* Service for interacting with the extension data service
* 用于与扩展数据服务交互的服务
*/
ExtensionDataService = "ms.vss-features.extension-data-service",
/**
* Service for showing global message banners at the top of the page
* 在页面顶部显示全局消息横幅的服务
*/
GlobalMessagesService = "ms.vss-tfs-web.tfs-global-messages-service",
/**
* Service for interacting with the host window's navigation (URLs, new windows, etc.)
* 与主机窗口导航(URL、新窗口等)交互的服务
*/
HostNavigationService = "ms.vss-features.host-navigation-service",
/**
* Service for interacting with the layout of the page: managing full-screen mode,
* opening dialogs and panels
* 与页面布局交互的服务:管理全屏模式,打开对话框和面板
*/
HostPageLayoutService = "ms.vss-features.host-page-layout-service",
/**
* Service for getting URLs/locations from the host context
* 从主机上下文获取URL/位置的服务
*/
LocationService = "ms.vss-features.location-service",
/**
* Exposes project-related information from the current page
* 显示当前页面中与项目相关的信息
*/
ProjectPageService = "ms.vss-tfs-web.tfs-page-data-service"
}
参考资料
- npm官网介绍:https://www.npmjs.com/package/azure-devops-extension-sdk
- 完整API官方介绍:https://docs.microsoft.com/en-us/javascript/api/azure-devops-extension-sdk/
- 官方使用示例:https://github.com/Microsoft/azure-devops-extension-sample
作者:酌三巡
感谢阅读,如需转载请注明出处!