[ブラウザで scrapbox.io を開く]
│
▼
[拡張機能: Tampermonkey]
(loader.user.js が動く)
│
│ GM_xmlhttpRequest で
│ http://localhost:3456/_loader へアクセス
▼
[あなたのPCのローカル開発サーバー]
cosense-userscript-dev が起動中
/_loader を返す
│
▼
[返ってきたローダーJSを eval]
│
▼
[ローカルでビルドされた userscript を読み込み・実行]
(dist/*.js)
ポイント:
Tampermonkey は「ローカル開発サーバーのスクリプトを読み込ませるブートストラップ」を入れるだけ。
mkdir my-userscripts && cd my-userscripts
npm init -y
npx cosense-userscript-dev loader
loader.user.js が生成される。
loader.user.js の中身をコピーmkdir scripts
npx cosense-userscript-dev
dist/ を配信し、変更が自動反映される。
https://scrapbox.io/ でページを開き、反映されていればOK。
bun があるなら npx の代わりに bunx でもOK。@match を変えるなら cosense-dev.config.ts を作って、loader を再生成する。GM_xmlhttpRequest は Tampermonkey / Greasemonkey などの userscript 拡張が提供する特別な HTTP リクエストAPI。 普通の XMLHttpRequest(や fetch)とは違い、拡張機能の権限で動くため、ページの制限を回避できる。
このため cosense-userscript-dev の loader.user.js は GM_xmlhttpRequest を使ってローカル開発サーバーへ取りに行っている。