Microsoft Graph-Toolkit in SharePoint-Framework-Lösungen

Verwenden Sie das Microsoft Graph-Toolkit in Ihren SharePoint-Framework Lösungen.

Wichtig

Das @microsoft/mgt-spfx Paket wurde eingestellt. Verwenden Sie Mehrdeutigkeit für Ihre SharePoint-Framework-Webparts.

Installation

Um Komponenten des Microsoft Graph-Toolkits aus der Bibliothek zu laden, fügen Sie ihrem SharePoint-Framework-Projekt die @microsoft/mgt-elementPakete , @microsoft/mgt-componentsund @microsoft/mgt-sharepoint-provider als Laufzeitabhängigkeit hinzu:

npm install @microsoft/mgt-element @microsoft/mgt-components @microsoft/mgt-sharepoint-provider

oder

yarn add @microsoft/mgt-element @microsoft/mgt-components @microsoft/mgt-sharepoint-provider

Verwendung

Wenn Sie SharePoint-Framework Webparts und Erweiterungen erstellen, verweisen Sie auf das Microsoft Graph-Toolkit , und in und @microsoft/mgt-sharepoint-provider@microsoft/mgt-element .SharePointProviderProvidercustomElementsHelper Wenn Sie React nicht verwenden, sollten Sie auch die Komponentenregistrierungsfunktionen aus @microsoft/mgt-components Paketen importieren.

Für nicht React basierte Lösungen

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

Wenn Sie ein Webpart mit React erstellen, können Sie das @microsoft/mgt-react Paket verwenden und die manuelle Registrierung von Komponenten überspringen. Stellen Sie jedoch sicher, dass Sie Ihre React Komponente verzögert aus dem Webpart laden, um die Mehrdeutigkeit zu nutzen.

// [...] 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
}

In den zugrunde liegenden React Komponenten kann die Komponente Des Microsoft Graph-Toolkits direkt verwendet werden.

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>
    );
  }
}

Wichtig

Stellen Sie sicher, dass Ihre Stammwebpartklasse keine Microsoft Graph Toolkit-Ressourcen aus @microsoft/mgt-reactimportiert. Diese sollten nur innerhalb der verzögert geladenen React Komponenten importiert werden.

Konfigurieren von Webpack

Zum Erstellen Ihres Webparts müssen Sie die SharePoint-Framework Webpack-Konfiguration aktualisieren, um modernes JavaScript mit optionaler Verkettung und Nullish-Zusammenführung durch zusätzliche Babel-Transformationen ordnungsgemäß zu behandeln.

! [WICHTIG] Wenn Sie Webpack nicht für die Verarbeitung von modernem JavaScript konfigurieren, können Sie keine Webparts erstellen, die das Microsoft Graph-Toolkit verwenden.

Installieren von Babel-Paketen

Um Abhängigkeiten, die ES2021-basierten Code ausgeben, ordnungsgemäß zu behandeln, fügen Sie dem Projekt einen Babel-Ladeprogramm und einige Transformationen als Entwicklungsabhängigkeiten hinzu.

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

Ändern der Webpack-Konfiguration

SharePoint-Framework bietet ein Erweiterbarkeitsmodell zum Ändern der Webpack-Konfiguration, die zum Bündeln der Webparts verwendet wird. Suchen und öffnen gulpfile.jsSie . Fügen Sie den folgenden Code oberhalb der Zeile hinzu, die enthält 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;
  }
});