Desarrollar una extensión web
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Use extensiones para mejorar Azure DevOps con nuevas experiencias web, widgets de panel, tareas de compilación y mucho más. Puede desarrollar extensiones mediante tecnologías estándar como HTML, JavaScript y CSS. Este tutorial le guía a través de la creación de una extensión web para Azure DevOps.
Sugerencia
Explore los ejemplos de extensión y la documentación más reciente sobre el desarrollo de extensiones mediante el SDK de extensión de Azure DevOps.
Requisitos previos
Debe tener los siguientes permisos e instalaciones.
- Debe ser propietario de la organización. Si no tiene una organización, puede crear una organización de forma gratuita.
- Instale Node.js.
- Instale la herramienta de empaquetado de extensiones (TFX). Ejecute
npm install -g tfx-cli
desde un símbolo del sistema, que se usa para empaquetar la extensión más adelante.
Creación de un directorio y un manifiesto
Una extensión se compone de un conjunto de archivos que incluye un archivo de manifiesto necesario. Se empaqueta en un archivo .vsix y se publica en Visual Studio Marketplace.
Cree un directorio para almacenar los archivos necesarios para la extensión:
mkdir my-first-extension
Desde este directorio, inicialice un nuevo manifiesto de paquete de npm:
npm init -y
Este archivo describe las bibliotecas necesarias para la extensión.
Instale el paquete del SDK de extensión web de Microsoft VSS y guárdelo en el manifiesto del paquete de npm:
npm install azure-devops-extension-sdk --save
Este SDK incluye una biblioteca de JavaScript que proporciona las API necesarias para comunicarse con la página en la que se inserta la extensión.
Cree un archivo de manifiesto de extensión denominado
vss-extension.json
en la raíz del directorio de extensión con el siguiente contenido:{ "manifestVersion": 1, "id": "my-first-extension", "publisher": "", "version": "1.0.0", "name": "My First Extension", "description": "A sample Visual Studio Services extension", "public": false, "categories": ["Azure Repos"], "targets": [ { "id": "Microsoft.VisualStudio.Services" } ], "contributions": [ { "id": "my-hub", "type": "ms.vss-web.hub", "targets": [ "ms.vss-code-web.code-hub-group" ], "properties": { "name": "My Hub", "uri": "my-hub.html" } } ], "files": [ { "path": "my-hub.html", "addressable": true }, { "path": "node_modules/azure-devops-extension-sdk", "addressable": true, "packagePath": "lib" } ] }
Nota:
La
public
propiedad controla si la extensión es visible para todos los usuarios de Visual Studio Marketplace. Mantenga las extensiones privadas durante el desarrollo.Cree un archivo denominado
my-hub.html
en la raíz del directorio de extensión con el siguiente contenido, que es para la vista (también conocida como centro) que ha contribuido a la experiencia web.<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"></script> <script> window.requirejs.config({ enforceDefine: true, paths: { 'SDK': './lib/SDK.min' } }); window.requirejs(['SDK'], function (SDK) { if (typeof SDK !== 'undefined') { console.log("SDK is defined. Trying to initialize..."); SDK.init(); SDK.ready().then(() => { console.log("SDK is ready"); document.getElementById("name").innerText = SDK.getUser().displayName; }); } else { console.log('SDK is not defined'); } }); </script> <style> body { background-color: rgb(0, 67, 117); color: white; margin: 10px; font-family: "Segoe UI VSS (Regular)","-apple-system",BlinkMacSystemFont,"Segoe UI",sans-serif; } </style> </head> <body> <h1>Hello, <span id="name"></span></h1> </body> </html>
El directorio de extensión debe tener un aspecto similar al del ejemplo siguiente.
|-- my-hub.html |-- node_modules |-- @types |-- azure-devops-extension-sdk |-- package.json |-- vss-extension.json