Chrome 拡張機能の開発中にホットリロード(自動読み込み)する方法
はじめに
Chrome 拡張機能の開発をしていて、ファイルの変更後に毎回 chrome://extensions
を開いて手動で更新するのがダルかったので、ファイルの変更を検知して自動で更新してくれる方法を調べた。
ほぼほぼ元記事通りの内容だけど、忘れないようにメモしておく。
TL;DR
- xpl/crx-hotreload の hot-reload.js をローカルに保存
manifest.json
に"background": { "scripts": ["hot-reload.js"] }
を追加- 開発中の拡張機能を
chrome://extensions
で読み込み(更新)
目次
環境・条件
- Google Chrome
- バージョン: 77.0.3865.90(Official Build)(64 ビット)
1 | $ sw_vers |
詳細
ローカルに手動で保存して利用する方法と、npm を使う方法とある。
ローカルに手動で保存
Chrome Extensionの開発時にホットリロードさせる - Qiita の内容通りに進めれば良い。
hot-reload.js をローカルに保存。src/js
に curl
で保存する場合は下記コマンド。
1 | $ curl https://raw.githubusercontent.com/xpl/crx-hotreload/master/hot-reload.js -o src/js/hot-reload.js |
manifest.json
に hot-reload.js
をバックグラウンドで実行するように変更。下記は src/manifest.json
に配置されている場合の例。
1 | { |
最後に chrome://extensions
で拡張機能を読み込み。
以降はファイル更新時に「拡張機能のリロード」と「(その拡張機能が動作しているアクティブ)タブのリロード」が行われるようになる。
npm を使う
crx-hotreload
をインストール。
1 | $ npm i -d crx-hotreload |
background.js
に追記。
1 | import hotreload from 'crx-hotreload'; |
manifest.json
を編集。(手動でやる場合と同様)
1 | { |
依存関係を解決して bundle してくれるコマンドでビルド。
1 | $ xxxx |
あとは npm-watch
と組み合わせることで、ファイル変更→変更検知→ビルド→拡張機能再読込み という流れにできる(はず)。
まとめ
- xpl/crx-hotreload の hot-reload.js をローカルに保存
manifest.json
に"background": { "scripts": ["hot-reload.js"] }
を追加- 開発中の拡張機能を
chrome://extensions
で読み込み(更新)
その他・メモ
xpl/crx-hotreload をベースに作られてる corupta/chrome-extension-hot-reload てのもあるっぽい。
参考文献
関連記事
- webpack & Babel を使って Chrome 拡張機能を開発するためのテンプレート(Hot Reload 付き)
- Chrome 拡張機能でリクエストヘッダをカスタマイズする方法
- Chrome 拡張機能で background scripts から content scripts にメッセージを送信する
- Chrome 拡張機能で CSV ファイルを生成してダウンロードする方法
- Chrome 拡張機能で同梱されたファイルにアクセス(画像を表示する例)
- Vue.js を使ってメインページ側で動作する Chrome 拡張機能を開発する方法
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア