Compartilhar via


Microsoft Graph Toolkit em soluções de Estrutura do SharePoint

Cuidado

O Toolkit do Microsoft Graph foi preterido. O período de reforma começa a 1 de setembro de 2025, com a reforma completa prevista para 28 de agosto de 2026. Os programadores devem migrar para utilizar os SDKs do Microsoft Graph ou outras ferramentas suportadas do Microsoft Graph para criar experiências Web. Para obter mais informações, veja o anúncio de preterição.

Utilize o Microsoft Graph Toolkit nas suas soluções de Estrutura do SharePoint.

Importante

O @microsoft/mgt-spfx pacote foi descontinuado. Utilize a desambiguação para as peças Web Estrutura do SharePoint.

Instalação

Para carregar componentes do Microsoft Graph Toolkit a partir da biblioteca, adicione os @microsoft/mgt-elementpacotes , @microsoft/mgt-componentse @microsoft/mgt-sharepoint-provider como uma dependência de runtime ao projeto Estrutura do SharePoint:

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

ou

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

Uso

Ao criar Estrutura do SharePoint peças Web e extensões, faça referência ao Toolkit customElementsHelperdo Microsoft Graph , Providere SharePointProvider a @microsoft/mgt-element partir de e @microsoft/mgt-sharepoint-provider. Se não estiver a utilizar React, também deve importar as funções de registo de componentes dos @microsoft/mgt-components pacotes.

Para soluções não baseadas em 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
}

Reagir

Se estiver a criar uma peça Web com React, pode utilizar o @microsoft/mgt-react pacote e ignorar o registo manual de componentes. No entanto, certifique-se de que carrega lentamente o componente React a partir da peça Web para utilizar a desambiguação.

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

Nos componentes de React subjacentes, o componente Microsoft Graph Toolkit pode ser utilizado diretamente.

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

Certifique-se de que a sua classe de peça Web raiz não importa quaisquer recursos do Microsoft Graph Toolkit do @microsoft/mgt-react. Estes só devem ser importados dentro dos componentes de React carregados em diferido.

Configurar o webpack

Para criar a sua peça Web, tem de atualizar a configuração do webpack Estrutura do SharePoint para processar corretamente o JavaScript moderno com encadeamento opcional e agrupamento nulo através de transformações adicionais do Babel.

! [IMPORTANTE] Se não configurar o webpack para processar JavaScript moderno, não poderá criar peças Web que utilizem o Microsoft Graph Toolkit.

Instalar pacotes Babel

Para processar corretamente as dependências que emitem código baseado em ES2021, adicione um carregador babel e algumas transformações como dependências de desenvolvimento ao projeto.

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

Modificar a configuração do webpack

Estrutura do SharePoint fornece um modelo de extensibilidade para modificar a configuração do webpack utilizada para agrupar as peças Web. Localize e abra gulpfile.js. Adicione o seguinte código acima da linha que contém 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;
  }
});