プラグインの使い方
このページで決めること:EmDashのプラグインを使うか、使う場合はどの形式まで使うか
決める前に知っておくこと
EmDashのプラグインは、コンテンツの保存などのイベントに応じた処理、独自のデータの保存、管理画面へのページや設定の追加、APIルートの提供などができます。形式は次の2つです。
| サンドボックス型プラグイン | ネイティブ型プラグイン | |
|---|---|---|
| 動く場所 | サンドボックスランナーが用意する、サイトとは分けられた実行環境 | Astroのサイトと同じプロセス |
| インストール | 管理画面のレジストリから、または astro.config.mjs の sandboxed: [] に登録 |
npmでインストールし、astro.config.mjs の plugins: [] に登録してデプロイ |
| できること | 宣言した権限(Capability)の範囲のEmDashのAPIだけを使える。CPU時間などに上限がある | サイトと同じ権限を持つ。Reactの管理ページ、Portable Textの描画コンポーネント、公開ページへのHTML・スクリプトの挿入ができる |
| 分離 | 分けられている | 分けられていない。不具合がサイト全体に影響することがある |
Cloudflare Workersでサンドボックス型プラグインを動かすには、Worker Loaderのバインディング(LOADER)とWorkersの有料プランが必要です。Cloudflare版の公式テンプレートは、このバインディングをコメントアウトした状態で作られます。サンドボックスランナーがない環境では、sandboxed: [] に登録したプラグインは読み込まれません。
プラグインが設定画面で受け取る秘密の値(外部サービスのAPIキーなど)は、現在、暗号化されずにデータベースに保存されます。
公式の推奨
- React管理ページ、Portable Textの描画コンポーネント、ページフラグメント、サイトのプロセスへの直接アクセスのどれかが必要な場合を除き、サンドボックス型プラグインを選びます。(公式「プラグイン概要」「プラグイン形式の選び方」)
- プラグインは、信頼できる公開者のものだけをインストールします。サンドボックス型でも、承認した権限の操作はできます。例えば
content:writeを承認すると、プラグインはコンテンツを変更できます。(公式「プラグインのインストール」) - インストールと更新のときは、同意画面で要求される権限を確認します。レジストリのプラグインの更新で権限が増える場合は、改めて承認が求められます。(公式「プラグインのインストール」)
別の選択肢が合う条件
公式テンプレートの機能で足りるサイトでは、Aのままで運用できます。フォームや埋め込みなど、機能を足したいが自分でコードを確認する時間がない場合は、Bでサンドボックス型だけに絞る方法があります。Workersの無料プランで運用する場合は、サンドボックス型プラグインが動かないため、AかCになります。
根拠にした公式ページ
- プラグイン概要(原文:https://docs.emdashcms.com/plugins/overview/)
- プラグインのインストール(原文:https://docs.emdashcms.com/plugins/installing/)
- プラグイン形式の選び方(原文:https://docs.emdashcms.com/plugins/creating-plugins/choosing-a-format/)
- プラグインサンドボックス(原文:https://docs.emdashcms.com/deployment/plugin-sandbox/)
- はじめてのネイティブ型プラグイン(原文:https://docs.emdashcms.com/plugins/creating-native-plugins/your-first-native-plugin/)
- サイトのプラグイン更新(原文:https://docs.emdashcms.com/plugins/upgrading-sites/)
- シークレットとキーの管理(原文:https://docs.emdashcms.com/deployment/secrets/)
- Dynamic Workersの料金(https://developers.cloudflare.com/dynamic-workers/pricing/)