Fabric Apps には、バックエンド API と共にフロントエンド アプリケーションをビルド、パッケージ化、提供する静的コンテンツ ホスティング サービスが含まれています。 静的ホスティングが有効になると、CLIは構築した資産をFabricにデプロイし、ホスティングURLを提供します。 ユーザーにサインインを要求し、Fabricアプリの閲覧権限を持たせることも、ホストされた資産への匿名アクセスを許可することもできます。
前提条件
- フロントエンド アプリケーション (React、Vue、バニラ TypeScript など) を含む Fabric Apps プロジェクト。
- 静的出力を生成するビルド コマンド (たとえば、
npm run build)。
静的ホスティングのしくみ
静的ホスティングを有効にしてデプロイする場合、CLI は次の手順を実行します。
- 構成したビルド コマンド (たとえば、
npm run build) を実行します。 - 出力フォルダーが存在し、ファイルが含まれていることを検証します。
- すべてのファイルを圧縮 ZIP アーカイブ (最大 100 MB) にパッケージ化します。
- Fabric Apps ホストにアーカイブをアップロードします。
- 設定されたアクセス設定を適用し、ホスティングURLを返します。
静的ホスティングを構成する
staticHosting ファイルの services の下に rayfin/rayfin.yml セクションを追加します。
services:
staticHosting:
enabled: true
folder: dist
buildCommand: npm run build
indexDocument: index.html
assetAccess: protected
構成オプション
| Option | 必須 | デフォルト | 説明 |
|---|---|---|---|
enabled |
はい | — | 静的ホスティングを有効にするには、 true に設定します。 |
folder |
はい | — | ビルドされた静的ファイルを含む出力フォルダー。 rootを基準にしています。 |
root |
いいえ | プロジェクトルート | フロントエンド プロジェクトのルート ディレクトリ(プロジェクト ルートに対する相対ディレクトリ)。 |
buildCommand |
いいえ | — | パッケージ化する前に実行するシェル コマンド (たとえば、 npm run build)。 |
indexDocument |
いいえ | — | ディレクトリ要求に対応する既定のドキュメント (たとえば、 index.html)。 |
assetAccess |
いいえ |
protected 非インタラクティブな展開の場合 |
ホスト資産へのアクセスを制御します。
protectedを使ってサインインと許可を要求し、Fabricアプリの閲覧を許可するか、publicで匿名アクセスを許可してください。 |
ホスト資産へのアクセスを設定する
assetAccess 以下のいずれかの値に設定します:
-
protected- ホストされた資産を取得する前に、ユーザーがサインインし、Fabricアプリを閲覧する許可を得る必要があります。 -
public- ホスティングURLを持つ誰でもサインインせずにホストされた資産を取得できるようにします。
保護ホスティングはFabric Appsが提供する静的ファイルへのアクセスを制御します。 アプリケーションやAPIの認証や認可に代わるものではありません。
最初のインタラクティブ npx rayfin up 展開では、設定が assetAccess されていなければアクセス設定を選択するよう促されます。 非インタラクティブな展開では protected を使い、その設定を rayfin.ymlに保存します。
デプロイ後にアクセス設定を変更するには、 assetAccessを更新し、その後フルデプロイを実行します:
npx rayfin up
npx rayfin up staticapp deployコマンドはコンテンツのみを更新します。 新しい assetAccess 値を適用するわけではありません。
別のフロントエンド ディレクトリを使用した例
フロントエンド コードがサブディレクトリに存在する場合:
services:
staticHosting:
enabled: true
root: frontend
folder: dist
buildCommand: npm run build
indexDocument: index.html
assetAccess: protected
この構成により、出力パスが <project-root>/frontend/distに解決されます。
静的コンテンツをデプロイする
フル デプロイ
npx rayfin upを実行すると、静的コンテンツは完全なスタック展開の一部として自動的にデプロイされます。
npx rayfin up
CLI によってフロントエンドがビルドされ、出力がパッケージされ、バックエンド構成と共にアップロードされます。 デプロイ後、CLI はホスティング URL を出力し、 .env.fabric-* ファイルに VITE_RAYFIN_HOSTING_URLとして書き込みます。
スタンドアロンの静的デプロイ
完全なデプロイを再実行せずに静的コンテンツのみを再デプロイするには、 staticapp deploy サブコマンドを使用します。
npx rayfin up staticapp deploy
このコマンドは、フロントエンド コードのみを変更し、より高速な反復サイクルが必要な場合に便利です。
ビルド 手順をスキップする
フロントエンドを既にビルドしていて、再構築せずに既存の出力をデプロイする場合:
npx rayfin up staticapp deploy --skip-build
詳細なログを有効にする
デプロイ中に詳細な出力を表示します。
npx rayfin up staticapp deploy --verbose
認証コールバックの構成
静的ホスティングと認証の両方が有効になっている場合、Rayfin CLI は、ホスティング URL に基づいて認証コールバック URI を自動的に登録します。
たとえば、ホスティング URL が https://example.webapp.comされている場合、CLI は次のコールバック URI を追加します。
services:
auth:
allowedRedirectUris:
- http://localhost:5173
- http://localhost:5173/auth/callback
- https://example.webapp.com/auth/callback
認証コールバック URI を手動で構成する必要はありません。CLI によって構成が更新され、デプロイ中にプッシュされます。
展開サイズの制限
- 圧縮された ZIP アーカイブは 100 MB を超えてはなりません。
- CLI では、最大圧縮を使用してアップロード サイズを最小限に抑えます。
- ビルド出力が制限を超えた場合は、次の方法で資産を最適化します。
- 運用ビルドからのソース マップの除外。
- 大きな画像やビデオを圧縮または削除する。
- バイナリ ファイルをバンドルするのではなく、Fabric Apps ストレージに移動する。
完全なコード例
静的ホスティング、認証、およびデータ サービスを有効にした完全な rayfin.yml 構成:
id: my-app
name: my-app
version: 1.0.0
services:
auth:
enabled: true
allowedRedirectUris:
- http://localhost:5173
- http://localhost:5173/auth/callback
fabric:
enabled: true
data:
enabled: true
dialect: mssql
staticHosting:
enabled: true
folder: dist
buildCommand: npm run build
indexDocument: index.html
assetAccess: protected
ローカルでテストする
デプロイする前に、静的ビルドがローカルで動作することを確認します。
フロントエンドを構築する:
npm run build出力フォルダーに想定されるファイルが含まれていることを確認します。
ls distローカル静的サーバーを使用してビルドされたファイルを提供します。
npx serve distサーバーによって出力された URL を開き、アプリケーションが正しく読み込まれることを確認します。
デプロイに関する問題のトラブルシューティング
静的フォルダーが見つかりません
静的フォルダーが存在しないことを CLI が報告する場合:
-
folderのrayfin.ymlパスが正しく、rootに対する相対パス (または、rootが設定されていない場合はプロジェクト ルート) であることを確認します。 - ビルド コマンドが正常に実行され、予想されるディレクトリに出力が生成されたことを確認します。
空の静的フォルダー
通常、空の出力フォルダーは、ビルド コマンドが失敗したか、出力が生成されなかったことを意味します。 ビルド コマンドを手動で実行してエラーを確認します。
npm run build
デプロイがサイズ制限を超えています
ZIP が 100 MB を超える場合:
- 不要なファイル (ソース マップ、開発資産) のビルド出力を確認します。
- 実稼働ビルドでソース マップを除外するように bundler を構成します。
- 大きなバイナリ ファイルを Fabric Apps ストレージに移動します。
リモート エンドポイントが構成されていない
npx rayfin up staticapp deploy コマンドには、既存のリモート展開が必要です。 最初 npx rayfin up 実行してリモート エンドポイントを構成し、その後の更新に staticapp deploy を使用します。