管理者は プラグインレジストリ からサンドボックス化プラグインをインストールするか、astro.config.mjs で npm パッケージを登録できます。設定ベースのプラグインはサンドボックスまたはサイトプロセスで実行できます。
管理画面からのインストールに備える
レジストリからのインストールには次が必要です。
plugins:manage権限を持つ管理者アカウント。- ダウンロードしたプラグインバンドル用の 設定済みストレージ。
- 利用可能なサンドボックスランナー。
Cloudflare Workers では、@emdash-cms/cloudflare の sandbox() を使います。
import { sandbox } from "@emdash-cms/cloudflare";
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: sandbox(),
}),
],
});
Cloudflare ランナーは Worker Loader を使い、プラグインごとに別の Worker を作成します。Workers Paid プランと、LOADER という名前の worker_loaders バインディングが必要です。サンドボックス化プラグインは PluginBridge 経由でコンテンツ、メディア、ストレージ、ネットワーク、メール API に到達するため、サイトの Worker エントリポイントはそのクラスをエクスポートする必要があります。
*-cloudflare テンプレートは PluginBridge をエクスポートしますが、Worker Loader バインディングはコメントアウトしたままなので、新規プロジェクトは Workers 無料プランでデプロイできます。スキャフォールディング中にサンドボックス化プラグインを有効にするか、Cloudflare サンドボックス設定 に従って後からバインディングを追加してください。sandbox() ヘルパーはビルド時に有効な Wrangler 設定を読み取ります。LOADER がないと、レジストリの閲覧は引き続き可能ですが、設定管理のサンドボックス化プラグインは読み込まれず、インストールまたは更新リクエストは SANDBOX_NOT_AVAILABLE を返します。
Node.js では、ランナーとその workerd ピア依存関係をインストールします。
npm install @emdash-cms/sandbox-workerd workerd
workerd プロセスは Node.js サーバーとは別にプラグインコードを実行します。EmDash 統合でランナーを選択します。
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
}),
],
});
両プラットフォームの開発セットアップ、ランタイム要件、リソース上限、ランナー利用不可エラーについては プラグインサンドボックス を参照してください。
レジストリからインストールする
- 管理パネルで Registry を開きます。
- プラグインを検索し、詳細ページを開きます。
- リリースを選択し、パブリッシャー、メタデータ、要求された権限、検証ステータスを確認します。
- Install を選択します。
- 同意ダイアログで検証済みのリリース識別子と権限を確認し、確定します。
EmDash はパブリッシャーの現在の署名済みレコードを検証し、サンドボックスランナー経由で読み込む前にダウンロードしたバンドルを確認します。プラグインは Plugins に表示され、そこで無効化や設定ができます。完全な検証と信頼モデルは プラグインレジストリ を参照してください。
権限を確認する
同意ダイアログはプラグインが宣言したすべての権限を示します。一般的な権限は次のとおりです。
| 権限 | 付与されるアクセス |
|---|---|
content:read | サイトコンテンツの読み取り |
content:write | コンテンツの作成、更新、削除 |
content:revisions:read | 保持されたコンテンツリビジョン履歴の読み取り |
schema:read | コレクションとフィールド定義の読み取り |
redirects:read | リダイレクトルールの読み取り |
redirects:write | 訪問者の送信先の変更 |
media:read | 準備済みメディアの安全なメタデータの読み取り |
media:bytes:read | 準備済みメディアのファイル内容とコンテンツハッシュの読み取り |
media:metadata:write | メディアの代替テキスト、キャプション、焦点の変更 |
media:write | メディアのアップロード、置換、削除 |
network:request | プラグインの許可ホストリストへのリクエスト送信 |
ダイアログは、プラグインが宣言した場合に Model Context Protocol(MCP)ツールとして公開されるプラグインルートも特定します。完全な権限モデルは Capabilities とセキュリティ を参照してください。
プラグインを更新する
- 管理パネルで Plugins を開きます。
- Check for updates を選択します。
- 利用可能なリリースがあるレジストリプラグインで Update を選択します。
- 同意ダイアログを確認し、更新を確定します。
レジストリの更新は、権限や MCP ツールを追加する場合、またはルートが認証済みから公開に変わる場合に、再度確認が必要です。変更を承認するまで、EmDash はインストール済みバージョンをそのままにします。
プラグインをアンインストールする
- 管理パネルで Plugins を開き、インストール済みプラグインを展開します。
- Uninstall を選択します。
- 後で再インストールするためにプラグインの保存データが不要な場合のみ Also delete plugin storage data を選択します。
- アンインストールを確定します。
EmDash はインストール済みバンドルを削除し、プラグインの読み込みを停止します。プラグインのストレージデータはデフォルトで残ります。
npm からインストールする
ネイティブプラグインと設定管理のサンドボックス化プラグインは npm 依存関係としてインストールします。パッケージの手順に従い、plugins: [] または sandboxed: [] を選びます。
次の例はネイティブの Field Kit プラグインを登録します。
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import { fieldKitPlugin } from "@emdash-cms/plugin-field-kit";
export default defineConfig({
integrations: [
emdash({
plugins: [fieldKitPlugin()],
}),
],
});
設定管理のプラグインは、npm 依存関係を更新してサイトをデプロイすると変わります。管理パネルからインストールまたは削除はできません。
インストール方法を選ぶ
| レジストリ | npm の sandboxed: [] | npm の plugins: [] | |
|---|---|---|---|
| インストールと更新 | 管理パネル | 依存関係の変更とデプロイ | 依存関係の変更とデプロイ |
| 実行 | 設定したサンドボックスランナー | 設定したサンドボックスランナー | サイトプロセス |
| EmDash へのアクセス | 宣言されたプラグイン API のみ | 宣言されたプラグイン API のみ | 宣言されたプラグイン API と直接のプロセスアクセス |
Node.js API と直接の fetch() | 利用不可 | 利用不可 | 利用可能 |
| React 管理コンポーネント | 利用不可 | 利用不可 | 利用可能 |
| Portable Text レンダラー | 利用不可 | 利用不可 | 利用可能 |
React 管理コンポーネント、Portable Text レンダラー、ページフラグメント、またはサイトプロセスへの直接アクセスが必要なときはネイティブプラグインを使います。宣言された プラグイン API 経由で動作できるときはサンドボックス化プラグインを使います。