If you developed custom SPFx web part and tested it on dev env you will most probably want to automate it’s provisioning to customers environments. In this article I will show how to do that via PnP template.
When you need to create PnP template the simplest option is to export it form existing site and copy those components which you need. This is much faster than trying to remember whole PnP schema.
So first of all we need to build sppkg in release mode (with “--ship” parameter) and upload it to App catalog:
gulp bundle --ship
gulp package-solution --ship
After that add your web part to some modern page – we will use test.aspx for example here. Now you have modern site running with your custom web part.
Next step is to export PnP template from your site:
Get-PnPProvisioningTemplate -Out template.xml
When export will be done edit template.xml and copy section pnp:ClientSidePages which may look like this (of course if you have several SPFx web parts there will be several pnp:CanvasControl instances):
<pnp:ClientSidePages> <pnp:ClientSidePage PageName="test.aspx" EnableComments="false" Publish="true"> <pnp:Sections> <pnp:Section> <pnp:Controls> <pnp:CanvasControl WebPartType="Custom" JsonControlData="..." ControlId="..." Order="1" Column="1" /> </pnp:Controls> </pnp:Section> </pnp:Sections> </pnp:ClientSidePage> </pnp:ClientSidePages>
and paste it to PnP template which you are going to use for provisioning on customers environments. When this template will be applied to the site it will have modern page with your custom SPFx web part.