Hot Reloading for Chrome Extensions について
Hot Reloading for Chrome Extensions は、Manifest V3 拡張機能の開発者向けの、依存関係のないホットリロード手段です。Node.js のファイル監視機能が拡張機能側のリスナーに通知し、変更後に開いている拡張機能のタブを更新して拡張機能を再読み込みします。
主な機能
- 01Node.js によるプロジェクトファイル監視
- 02SSE による再読み込み通知
- 03開いている拡張機能タブの更新
- 04拡張機能ランタイムの再読み込み
活用シーン
- 01拡張機能開発中の再読み込み自動化
- 02編集後のオプションページやポップアップの更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ paulirish/ dotfiles --skill hot-reloading-for-chrome-extensionsインストール後、Claude Code で/hot-reloading-for-chrome-extensionsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.claude/settings.local.jsonexamples/hot-reload-client.jshot-reload-server.mjs詳細
Chrome 拡張機能開発のホットリロード
Manifest V3(MV3)拡張機能向けに、依存関係ゼロのホットリロードシステムを提供します。このシステムでは、ソースファイルが変更されるたびに拡張機能とタブが自動的に再読み込みされるため、chrome://extensions で手動で再読み込みする必要がありません。
仕組み
このシステムは、サーバー側のウォッチャーとクライアント側のリスナーで構成されます。
- ウォッチャー(Node.js):開発者のマシン上で動作します。ネイティブの
fs.watchを使ってプロジェクトディレクトリを監視し、Server-Sent Events(SSE)エンドポイント(/events)を公開します。ファイルの変更を検出すると、「reload」シグナルをブロードキャストします。 - クライアント(JavaScript):拡張機能のバックグラウンドサービスワーカーに挿入されます。
EventSourceを使ってウォッチャーサーバーに接続します。「reload」シグナルを受信すると、開いている拡張機能のタブ(オプションページ、ポップアップ)を再読み込みした後、chrome.runtime.reload()を呼び出して拡張機能自体を再読み込みします。
エージェント向け実装ガイド
現在のプロジェクトにホットリロードを実装するには、次の手順に従ってください。
1. ソースファイルをコピーする
スキルの examples/ ディレクトリから、次のファイルをプロジェクトのルートまたは指定した tools/ ディレクトリにコピーします。
examples/hot-reload-server.mjs->hot-reload-server.mjsexamples/hot-reload-client.js->hot-reload-client.js
2. バックグラウンドスクリプトを設定する
拡張機能のバックグラウンドサービスワーカー(例:service-worker.js)を更新し、クライアントスクリプトをインポートします。ファイルの1行目に記述してください。
importScripts('hot-reload-client.js');
3. 権限を更新する
manifest.json に、開発モードを検出するための management と、開いている拡張機能のページを再読み込みするための tabs が含まれていることを確認します。
{
"permissions": [
"management",
"tabs"
]
}
4. 実行手順をユーザーに伝える
ターミナルでウォッチャーサーバーを起動するよう、ユーザーに伝えます。
node hot-reload-server.mjs
追加リソース
例
examples/ にある、動作する設定と実装スクリプト:
examples/hot-reload-server.mjs- Node.js のウォッチャーサーバー(プロジェクトにコピーします)。examples/hot-reload-client.js- 拡張機能側のクライアント(プロジェクトにコピーします)。