プラグインのインストール
このページで分かること
- レジストリからインストールするための準備(
plugins:manage権限、ストレージ、サンドボックスランナー)と、Cloudflare Workers・Node.jsそれぞれの設定 - 管理画面でのインストール、権限の確認、更新、アンインストールの手順
- npmのパッケージを
astro.config.mjsに登録する方法と、3つのインストール方法の比較
このページの目次
管理者は、プラグインレジストリからサンドボックス型プラグインをインストールするか、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の有料プラン(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",
}),
],
});
両方のプラットフォームでの、開発環境の設定、実行環境の要件、リソースの制限、ランナーが使えない場合のエラーについては、プラグインサンドボックスを参照してください。
やさしい解説
WordPressでは、管理画面の「プラグイン」→「新規追加」からすぐにインストールできます。EmDashで同じように管理画面からインストールするには、先に「サンドボックスランナー」(プラグインをサイト本体から切り離して動かす仕組み)を用意する必要があります。Cloudflareでは有料プランと LOADER バインディング、Node.jsでは @emdash-cms/sandbox-workerd と workerd のインストールが必要です。公式の *-cloudflare テンプレートでは、このバインディングは最初はコメントアウトされています。
レジストリからのインストール
- 管理画面で「レジストリ」を開きます。
- プラグインを検索し、詳細ページを開きます。
- リリースを選択し、公開者、メタデータ、要求される権限、検証の状態を確認します。
- 「インストール」を選択します。
- 同意のダイアログで、検証済みのリリースの識別子と権限を確認してから、確定します。
EmDashは、公開者の現在の署名付きレコードを検証し、ダウンロードしたバンドルを確認してから、サンドボックスランナーを通して読み込みます。プラグインは「プラグイン」に表示され、そこで無効にしたり設定したりできます。検証と信頼のモデルの全体は、プラグインレジストリを参照してください。
権限の確認
同意のダイアログには、プラグインが宣言したすべての権限が表示されます。よく使われる権限には次のものがあります。
| 権限 | 許可されるアクセス |
|---|---|
content:read |
サイトのコンテンツの読み取り |
content:write |
コンテンツの作成、更新、削除 |
media:read |
メディアのレコードとファイルの読み取り |
media:write |
メディアのアップロード、置き換え、削除 |
network:request |
プラグインの許可ホストのリストへのリクエストの送信 |
プラグインがModel Context Protocol(MCP)のツールとして公開するルートを宣言している場合は、ダイアログにそれも表示されます。権限のモデルの全体は、権限(Capabilities)とセキュリティを参照してください。
プラグインの更新
- 管理画面で「プラグイン」を開きます。
- 「更新を確認」を選択します。
- 新しいリリースがあるレジストリのプラグインで、「更新」を選択します。
- 同意のダイアログを確認してから、更新を確定します。
レジストリからの更新で、権限やMCPのツールが追加される場合や、ルートが認証済みから公開に変わる場合は、もう一度確認が必要です。変更を承認するまで、EmDashはインストール済みのバージョンをそのまま使います。
プラグインのアンインストール
- 管理画面で「プラグイン」を開き、インストール済みのプラグインを展開します。
- 「アンインストール」を選択します。
- あとで再インストールするときにプラグインが保存したデータが不要な場合にだけ、「プラグインが保存したデータも削除する」を選択します。
- アンインストールを確定します。
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の依存パッケージを更新してサイトをデプロイしたときに変わります。管理画面からインストールしたり削除したりはできません。
インストール方法の選び方
| レジストリ | sandboxed: [] を使うnpm |
plugins: [] を使うnpm |
|
|---|---|---|---|
| インストールと更新 | 管理画面 | 依存パッケージの変更とデプロイ | 依存パッケージの変更とデプロイ |
| 実行場所 | 設定したサンドボックスランナー | 設定したサンドボックスランナー | サイトのプロセス |
| EmDashへのアクセス | 宣言したプラグインAPIのみ | 宣言したプラグインAPIのみ | 宣言したプラグインAPIと、プロセスへの直接のアクセス |
Node.jsのAPIと、直接の fetch() |
使用不可 | 使用不可 | 使用可 |
| Reactの管理画面のコンポーネント | 使用不可 | 使用不可 | 使用可 |
| Portable Textの描画コンポーネント | 使用不可 | 使用不可 | 使用可 |
Reactの管理画面のコンポーネント、Portable Textの描画コンポーネント、ページフラグメント、サイトのプロセスへの直接のアクセスのいずれかが必要な場合は、ネイティブ型プラグインを使います。宣言したプラグインAPIで動かせる場合は、サンドボックス型プラグインを使います。