Microsoft Graph Toolkit en soluciones de SharePoint Framework
Use Microsoft Graph Toolkit en las soluciones de SharePoint Framework.
Importante
El @microsoft/mgt-spfx
paquete se ha descontinuado. Use la desambiguación para los elementos web de SharePoint Framework.
Instalación
Para cargar componentes de Microsoft Graph Toolkit desde la biblioteca, agregue los @microsoft/mgt-element
paquetes , @microsoft/mgt-components
y @microsoft/mgt-sharepoint-provider
como una dependencia en tiempo de ejecución al proyecto de SharePoint Framework:
npm install @microsoft/mgt-element @microsoft/mgt-components @microsoft/mgt-sharepoint-provider
o
yarn add @microsoft/mgt-element @microsoft/mgt-components @microsoft/mgt-sharepoint-provider
Uso
Al compilar SharePoint Framework elementos web y extensiones, haga referencia al kit de herramientas de Microsoft Graph customElementsHelper
, Provider
y SharePointProvider
desde @microsoft/mgt-element
y @microsoft/mgt-sharepoint-provider
. Si no usa React, también debe importar las funciones de registro de componentes de @microsoft/mgt-components
los paquetes.
Para soluciones no basadas en React
import { customElementsHelper, Providers } from '@microsoft/mgt-element';
import { SharePointProvider } from "@microsoft/mgt-sharepoint-provider";
import { registerMgtPersonComponent } from '@microsoft/mgt-components';
// [...] trimmed for brevity
export default class MgtWebPart extends BaseClientSideWebPart<IMgtWebPartProps> {
protected async onInit() {
if (!Providers.globalProvider) {
Providers.globalProvider = new SharePointProvider(this.context);
}
customElementsHelper.withDisambigutaion('contoso-hr-solution');
registerMgtPersonComponent();
}
public render(): void {
this.domElement.innerHTML = `
<div>
<mgt-contoso-hr-solution-person person-query="me"></mgt-person>
</div>`;
}
// [...] trimmed for brevity
}
React
Si va a compilar un elemento web con React, puede usar el @microsoft/mgt-react
paquete y omitir el registro manual de componentes. Sin embargo, asegúrese de cargar de forma diferida el componente de React desde el elemento web para usar la desambiguación.
// [...] trimmed for brevity
import { Providers, customElementHelper } from "@microsoft/mgt-element";
import { SharePointProvider } from "@microsoft/mgt-sharepoint-provider";
import { lazyLoadComponent } from "@microsoft/mgt-spfx-utils";
// Async import of component that imports the React Components
const MgtReact = React.lazy(
() =>
import(/* webpackChunkName: 'mgt-react-component' */ "./components/MgtReact")
);
// set the disambiguation before initializing any web part
customElementHelper.withDisambiguation("mgt-demo-client-side-solution");
export default class MgtDemoWebPart extends BaseClientSideWebPart<IMgtDemoWebPartProps> {
// set the global provider
protected async onInit(): Promise<void> {
if (!Providers.globalProvider) {
Providers.globalProvider = new SharePointProvider(this.context);
}
return super.onInit();
}
public render(): void {
const element = lazyLoadComponent(MgtReact, {
description: this.properties.description
});
ReactDom.render(element, this.domElement);
}
// [...] trimmed for brevity
}
En los componentes de React subyacentes, el componente Microsoft Graph Toolkit se puede usar directamente.
import { Person } from '@microsoft/mgt-react';
import { ViewType } from '@microsoft/mgt-components';
// [...] trimmed for brevity
export default class MgtReact extends React.Component<IMgtReactProps, {}> {
public render(): React.ReactElement<IMgtReactProps> {
return (
<div className={ styles.mgtReact }>
<Person personQuery="me" view={ViewType.image}></Person>
</div>
);
}
}
Importante
Asegúrese de que la clase de elemento web raíz no importa ningún recurso del kit de herramientas de Microsoft Graph desde @microsoft/mgt-react
. Solo deben importarse dentro de los componentes de React cargados diferidos.
Configuración de webpack
Para compilar el elemento web, debe actualizar la configuración SharePoint Framework webpack para controlar correctamente JavaScript moderno con encadenamiento opcional y fusión nula a través de transformaciones adicionales de Babel.
! [IMPORTANTE] Si no configura webpack para procesar JavaScript moderno, no podrá crear elementos web que usen Microsoft Graph Toolkit.
Instalación de paquetes de Babel
Para controlar correctamente las dependencias que emiten código basado en ES2021, agregue un cargador babel y algunas transformaciones como dependencias de desarrollo al proyecto.
npm i --save-dev babel-loader@8.3.0 @babel/plugin-transform-optional-chaining @babel/plugin-transform-nullish-coalescing-operator @babel/plugin-transform-logical-assignment-operators
Modificación de la configuración de webpack
SharePoint Framework proporciona un modelo de extensibilidad para modificar la configuración de webpack que se usa para agrupar los elementos web. Busque y abra gulpfile.js
. Agregue el código siguiente encima de la línea que contiene build.initialize(require('gulp'));
:
const path = require("path");
const litFolders = [
`node_modules${path.sep}lit${path.sep}`,
`node_modules${path.sep}@lit${path.sep}`,
`node_modules${path.sep}lit-html${path.sep}`
];
build.configureWebpack.mergeConfig({
additionalConfiguration: generatedConfiguration => {
generatedConfiguration.module.rules.push({
test: /\.js$/,
// only run on lit packages
include: resourcePath =>
litFolders.some(litFolder => resourcePath.includes(litFolder)),
use: {
loader: 'babel-loader',
options: {
plugins: [
'@babel/plugin-transform-optional-chaining',
'@babel/plugin-transform-nullish-coalescing-operator',
'@babel/plugin-transform-logical-assignment-operators'
]
}
}
});
return generatedConfiguration;
}
});