【SPFx】Library Componentsを試してみる

f:id:tecchan365:20190815103622p:plain

本日(2019/08/15)、SharePoint Framework のバージョン 1.9.1 がリリースされました。
バージョンアップに伴い、Library ComponentsがGAとなったのでさっそく試してみました。

Library Componentsとは

SharePoint Frameworkの共通ソースコードです。
さまざまなSharePoint FrameworkからLibrary Componentsを参照でき、Library Componentsで定義した処理を利用できるようになります。

f:id:tecchan365:20190815075635p:plain

docs.microsoft.com

docs.microsoft.com

ジェネレーターのバージョンアップ

以下のコマンドを実行し、ジェネレーターのバージョンを1.9.1にアップデートします。

npm update -g @microsoft/generator-sharepoint  

f:id:tecchan365:20190815074633p:plain

ソリューションの作成

Yeomanジェネレーターより、ソリューションを作成します。

yo @microsoft/sharepoint

「Which type of client-side component to create?」の質問に対し、今までは「Webpart」「Extension」の2択だったのに対し、「Library」が追加されています。

f:id:tecchan365:20190815073408p:plain

以下のように回答し、ソリューションを作成してみました。

f:id:tecchan365:20190815073046p:plain

ソリューションの構造

ソリューションの構造は以下のようになっています。
indext.ts にexportするモジュールが定義されています。

f:id:tecchan365:20190815082316p:plain

「./libraries/libraryComponents/LibraryComponentsLibrary」を開き、試しに「getMyName」メソッドを定義します。

f:id:tecchan365:20190815083156p:plain

gulp を実行して、ビルドがすべて正常であることを確認します。

f:id:tecchan365:20190815085537p:plain

Library Componentsを参照できるようにする

以下のコマンドをLibrary Componentsのルート ディレクトリで実行します。

npm link 

これにより、package.json で提供されている名前を持つライブラリへのローカル npm リンクが作成されます。

f:id:tecchan365:20190815083709p:plain

WebパーツからLibrary Componentsを参照する

Library Componentsを利用したいWebパーツのソリューションを開きます。

f:id:tecchan365:20190815084531p:plain

ターミナルで、以下のコマンドを実行します。
このコマンドによって、Web パーツにローカルに組み込まれているそのライブラリへのシンボリックリンクが作成され、自分の Web パーツで使用できるようになります。

npm link library-components

f:id:tecchan365:20190815084802p:plain

Webパーツクラスを開き、モジュールをインポートします。

f:id:tecchan365:20190815085723p:plain

renderメソッドの中で、インスタンスを作成し、先程定義した「getMyName」をプログラムします。

f:id:tecchan365:20190815094128p:plain

gulp serve で実行してみると、Library Componentsで定義したgetMyNameが呼び出されていることがわかります。

f:id:tecchan365:20190815094211p:plain

以上、Library Componentsを試してみたでした。