heft start で動くのは確認できました。でも、それは「開発中の起動」です。他の人が使えるように配るには、何が必要でしょう?
配布用の1つのファイルにまとめる必要があります。それが .sppkg(エスピーパッケージ)。開発中のコードを本番用に固め、SharePointに登録できる形にしたものです。この記事で、その .sppkg を作ります。
まず、バージョンを確認する
パッケージにはバージョン番号が付きます。config/package-solution.json を開き、version を確認しましょう。
{
"solution": {
"name": "spfx-list-viewer-client-side-solution",
"id": "……",
"version": "1.0.0.0"
}
}
初回は 1.0.0.0 のままでOKです。このバージョンは、あとで更新版を配るときに上げることになります(この記事の最後で触れます)。
本番用にビルドする
パッケージ生成は、プロジェクトフォルダで次の1コマンドです。
npm run build
これは package.json に定義された本番ビルドで、中身は次の2段階です。
heft test --clean --production… きれいな状態から本番用にコンパイル・検査heft package-solution --production… 検査済みの成果物を.sppkgにまとめる
gulp 世代の gulp bundle --ship && gulp package-solution --ship にあたる作業を、Heft世代では npm run build 一発で行う、と考えてください。
古い記事だと「bundle して package-solution して……」と2つコマンドを打つ手順が多いけど、私たちの世代(1.22+)は npm run build でまとめてOK。もし個別に打ちたいときは、上に書いた2つのheftコマンドを順に実行してもいいよ。
できあがった .sppkg の在り処
ビルドが成功すると、.sppkg ファイルがここに生成されます。
sharepoint/solution/spfx-list-viewer.sppkg
この1ファイルが、これから配る「アプリの実体」です。中身はコードやリソースが1つに固められていて、そのままSharePointへ登録できます。
npm run build を実行し、sharepoint/solution/ フォルダに .sppkg ができているか確認しましょう。
.sppkg が生成され、ビルドが赤いエラーなく終わっていれば成功です。もしエラーで止まったら、まずメッセージの1行目を読みます。多くは型の不一致や、未使用の変数などの軽微な指摘です。heft start で動いていたなら、本番ビルド固有の検査(lint)に引っかかっただけのことがほとんどです。
更新版を配るときは、バージョンを上げる
いま作ったのは 1.0.0.0。あとで機能を直して配り直すときは、package-solution.json の version を上げてから(例:1.0.1.0)、もう一度 npm run build します。バージョンを上げないと、SharePoint側が「新しい版だ」と認識してくれません。この運用は、次の記事の最後でもう一度触れます。
この記事のまとめ
- 配布の実体は
.sppkg。npm run buildで生成する npm run build= 本番コンパイル+パッケージ化(gulp世代の bundle/package-solution 相当)- 成果物は
sharepoint/solution/*.sppkg - 更新版は
package-solution.jsonのversionを上げてから再ビルド
パッケージができました。次はいよいよ最終工程——これをSharePointにアップロードし、ページに配置して「本番で動く」状態にします。
- .sppkg
- SharePointアプリの配布パッケージ。コードを1ファイルに固めたもの
- npm run build
- 本番ビルド。内部でheftのproductionコンパイルとpackage-solutionを実行
- package-solution.json
- パッケージ名・ID・バージョンを持つ設定。更新時はversionを上げる
- version
- パッケージの版番号(例1.0.0.0)。上げないと更新が認識されない