メインコンテンツまでスキップ

xrift.json 設定

プロジェクトルートの xrift.json でアイテムの設定を行います。ワールドと同じファイルを使用しますが、item キー配下に設定します。

設定例

{
"item": {
"distDir": "./dist",
"title": "My Item",
"description": "サンプルアイテムです",
"thumbnailPath": "thumbnail.png",
"buildCommand": "npm run build",
"ignore": [
"**/.DS_Store",
"**/Thumbs.db",
"**/*.map"
],
"permissions": {
"allowedDomains": ["api.example.com"],
"allowedCodeRules": ["no-storage-access"]
}
}
}

設定項目

フィールド説明
distDirstringアップロードするビルド成果物のディレクトリ
titlestringアイテムのタイトル(未設定の場合、アップロード時に入力)
descriptionstringアイテムの説明(未設定の場合、アップロード時に入力)
thumbnailPathstringサムネイル画像のパス(distDir からの相対パス)
buildCommandstringアップロード前に実行するビルドコマンド
ignorestring[]アップロードから除外するファイルの glob パターン
permissionsobjectアイテムが必要とする権限設定
ワールド設定との違い

アイテムの設定はワールドと共通の項目を使いますが、physics / camera / outputBufferTypeワールド専用の設定です。アイテムではこれらは使用しません。

各項目の詳細

distDir

アップロード対象のディレクトリを指定します。Module Federation の remoteEntry.js を含むビルド出力ディレクトリです。

{
"item": {
"distDir": "./dist"
}
}

title / description

アイテムのタイトルと説明を設定します。これらはオプショナルですが、設定しておくと xrift upload item 実行時のプロンプトをスキップできます。

{
"item": {
"title": "My Awesome Item",
"description": "インタラクティブな 3D アイテムです"
}
}

thumbnailPath

アイテムのサムネイル画像を指定します。distDir からの相対パスで指定します。

{
"item": {
"distDir": "./dist",
"thumbnailPath": "thumbnail.png"
}
}

この場合、dist/thumbnail.png がサムネイルとして使用されます。

推奨サイズ: 512x512 ピクセル

buildCommand

xrift upload item 実行時に、アップロード前に自動実行されるコマンドです。

{
"item": {
"buildCommand": "npm run build"
}
}

これを設定しておくと、手動でビルドする必要がなくなります。

ignore

アップロードから除外するファイルを glob パターンで指定します。

{
"item": {
"ignore": [
"**/.DS_Store",
"**/Thumbs.db",
"**/*.map"
]
}
}

permissions

アイテムが必要とする権限を宣言します。ここで宣言された権限は、アイテムの審査時に考慮され、アイテムをワールド内で使用する際にも適用されます。

設定説明
allowedDomainsstring[]アイテムが通信する外部ドメインのリスト
allowedCodeRulesstring[]緩和が必要なコードセキュリティルールのリスト

基本設定

{
"item": {
"permissions": {
"allowedDomains": ["api.example.com", "cdn.example.com"],
"allowedCodeRules": ["no-storage-access", "no-network-without-permission"]
}
}
}

allowedDomains

アイテムのコードが通信する外部ドメインを指定します。@xrift/code-security のコード解析により、許可されていないドメインへの通信は検出・ブロックされます。

allowedCodeRules

@xrift/code-security で定義されているコードセキュリティルールの緩和を宣言します。デフォルトでは安全でない操作(eval、外部通信、ストレージアクセスなど)はブロックされますが、アイテムの機能上必要な場合にここで緩和を宣言します。

動的コード実行
ルール説明
no-evaleval() による文字列のコード実行を許可
no-new-functionFunction コンストラクタによるコード動的生成を許可
no-string-timeoutsetTimeout/setInterval への文字列引数を許可
no-javascript-blobJavaScript Blob を使ったスクリプト動的生成を許可
難読化
ルール説明
no-obfuscation難読化されたコードパターンを許可
ネットワーク通信
ルール説明
no-network-without-permissionfetch や WebSocket 等のネットワーク通信を許可
no-unauthorized-domainallowedDomains に含まれないドメインへの接続を許可
no-rtc-connectionWebRTC ピア接続を許可
no-external-import外部 URL からの JavaScript モジュール読み込みを許可
ストレージ・データ
ルール説明
no-storage-accesslocalStorage / sessionStorage へのアクセスを許可
no-cookie-accessCookie の読み書きを許可
no-indexeddb-accessIndexedDB へのアクセスを許可
no-storage-event他タブのストレージ変更イベントの監視を許可
DOM 操作
ルール説明
no-dangerous-dominnerHTML やスクリプト要素の挿入を許可
ブラウザ API
ルール説明
no-navigator-access位置情報・カメラ・マイク・クリップボード等へのアクセスを許可
グローバル汚染
ルール説明
no-sensitive-api-overridefetch 等のセキュリティ上重要な API の書き換えを許可
no-global-overridewindow / document 等のグローバルオブジェクトの書き換えを許可
no-prototype-pollution組み込みオブジェクトのプロトタイプ変更を許可