Mise en package de solutions SharePoint
La tâche Gulp du package-solution parcourt /config/package-solution.json à la recherche de plusieurs détails de configuration, notamment certains chemins de fichiers génériques, et définit la relation entre les composants (WebParts et les Applications) d’un package.
Le schéma pour le fichier de configuration est le suivant :
interface IPackageSolutionTaskConfig {
paths?: {
packageDir?: string;
debugDir?: string;
zippedPackage?: string;
featureXmlDir?: string;
manifestsMatch?: string;
manifestDir?: string;
sharepointAssetDir?: string;
};
solution?: ISolution;
}
Chaque fichier de configuration du package comporte certains paramètres facultatifs pour écraser les endroits où la tâche recherche des fichiers sources et des manifestes, et pour définir l’emplacement où le package sera écrit. En outre, il contient une définition de solutions requise, qui fournit au programme de création de package des instructions sur les relations entre les différents composants.
Définition de la solution (ISolution)
interface ISolution {
name: string;
id: string;
title?: string;
supportedLocales?: string[];
version?: string;
features?: IFeature[];
iconPath?: string;
skipFeatureDeployment?: boolean;
}
Chaque fichier solution doit avoir un name qui identifie le package dans l’interface utilisateur SharePoint. Par ailleurs, chaque package doit contenir un identificateur global unique (id), qui est utilisé de manière interne par SharePoint. Si vous le souhaitez, vous pouvez également spécifier un numéro de version au format « X.X.X.X », qui est utilisé pour déterminer les différentes versions du package lors de la mise à niveau.
Notes
Le système de contrôle de version s’applique uniquement à l’infrastructure de fonctionnalité et aux définitions de fonctionnalités SharePoint incluses dans le package. Le code et les ressources de la nouvelle version du package sont disponibles dès que la nouvelle version du package est ajoutée au catalogue d’applications, sans avoir besoin de mettre à jour l’application dans les sites.
La définition de la solution contient également une liste de définitions de fonctionnalités SharePoint.
Notes
Si ce champ est omis ou vide, la tâche crée une fonctionnalité unique pour chaque composant (mappage 1/1).
Définition de la fonctionnalité (IFeature)
interface IFeature {
title: string;
description: string;
id: string;
version?: string;
componentIds?: string[];
components: IComponent[];
assets: ISharepointAssets<string>;
}
Il est important de remarquer que cette définition sert à créer une fonctionnalité SharePoint, et que certaines de ces options sont affichées dans l’interface Utilisateur. Comme pour la solution, chaque fonctionnalité a un title, description, idet version numéro obligatoire (au format X.X.X.X). La fonctionnalité id doit également être un identificateur global unique.
Chaque fonctionnalité peut également contenir un nombre quelconque de composants qui sont activés lorsque la fonctionnalité est activée. Cela est défini via une liste de componentIds, qui sont des identificateurs globaux uniques qui doivent correspondre à l’ID dans le fichier manifeste du composant. Si cette liste n’est pas définie ou vide, le packageur inclut chaque composant de la fonctionnalité.
Chemins d’accès
interface IPackageSolutionTaskConfig {
paths?: {
packageDir?: string;
debugDir?: string;
zippedPackage?: string;
featureXmlDir?: string;
manifestsMatch?: string;
manifestDir?: string;
sharepointAssetDir?: string;
};
solution?: ISolution;
}
packageDir: dossier racine d’empaquetage. La valeur par défaut est./sharepoint. Tous les autres chemins d’accès sont relatifs à ce dossier.debugDir: dossier dans lequel écrire le package brut sur le disque pour le débogage. La valeur par défaut estsolution/debug.zippedPackage: Nom du fichier SPPKG à créer (avec l’extension). La valeur par défaut estClientSolution.sppkg.featureXmlDir: Dossier contenant les fichiers XML de fonctionnalité personnalisée à importer dans le package. La valeur par défaut estfeature_xml.Important
Notez que tous les fichiers de ce dossier sont inclus dans le SPPKG. Cependant, vous devez créer un fichier .rels pour que vos fonctionnalités personnalisées puissent être incluses dans le manifeste du package.
manifestsMatch: Glob à mettre en correspondance pour rechercher des fichiers manifeste. Effectue une recherche dans dist/ lors de l’exécution en mode normal, mais dans deploy/ pour la production.manifestDir: Chemin d’accès au dossier dans lequel sont stockés les manifestes. La valeur par défaut estbuildConfig.distFolder.sharepointAssetDir: Répertoire contenant des composants de SharePoint (par exemple, les éléments de fonctionnalité, les manifestes d’éléments et les actions de mise à niveau), qui sont automatiquement inclus dans le package SharePoint. La valeur par défaut estassets.
Exemples
Configuration par défaut
{
"solution": {
"name": "spfx-hello-world-client-side-solution",
"id": "77fd2eed-55b0-42bf-8b4d-f66730cb0c34",
"version": "1.0.0.0"
},
"paths": {
"zippedPackage": "solution/spfx-hello-world.sppkg"
}
}
Fichier XML de fonctionnalité personnalisée
Pour que vous puissiez configurer plusieurs ressources SharePoint (par exemple, des modèles de listes, des pages ou des types de contenu), du code XML de fonctionnalité personnalisée peut également être injecté dans le package. Il est utilisé pour configurer les ressources nécessaires pour les applications, mais peut également être utilisé pour les composants WebPart. La documentation sur le code XML de fonctionnalité se trouve sous Fichiers Feature.xml.
La tâche de mise en package recherche les fichiers XML de fonctionnalité personnalisée dans ./sharepoint/feature_xml. Tous les fichiers de ce dossier sont inclus dans le package d’application final. Toutefois, la tâche s’appuie sur le contenu du dossier _rels/ pour déterminer les fonctionnalités personnalisées qui sont définies.
Elle part du principe que chaque fichier .xml.rels est associé à une fonctionnalité .xml du même nom au niveau supérieur du répertoire feature_xml/ et ajoute une relation au fichier AppManifest.xml.rels qui contient cette fonctionnalité dans le package.