Firefoxのアドオン開発環境の導入(Add-on SDK編)その2

前回の続きです

Add-on SDKの開発環境を更に便利にする設定

jpm run を使うと一時的に新しいプロファイルが作られて綺麗な状態で動作確認できるのはいいんだけど、そのプロファイル上で起きた変更はウィンドウを閉じるとすべてなかったことになるのでブックマークも何もすべての設定が消えてしまう
これでは毎回特定のページ開いて動作確認したり他のアドオンとの相性を確認したりするのに不便だ
調べてみるといくつかのTipsが見つかったので記録しておく

指定したプロファイル・Firefoxのバージョンで実行する

jpm run にオプションを足して起動するやり方

jpm - Mozilla | MDN

jpm run -p <プロファイル名>

とりあえずこれではじめから好きな設定で使えるようになる
ただしjpmから起動した場合はプロファイルを一時的に別の場所にコピーしているらしいのでやはりこの状態での設定変更は保存されないので終了とともに起動前の状態に戻ってしまう
必要な設定はあらかじめ(jpmをつかわない)通常の起動時に済ませておけばいい
ちなみにプロファイルをコピーしないでそのまま使うオプションもあるようだがリスキーなので使わないほうがいいと思う

さらにDeveloper Edition でテストしたいとかNightlyでテストしたいとかもっと古いバージョンでテストしたいとかの場合は

jpm run -b <Firefox本体のフルパス>

もちろん両方同時にも使える

jpm run -p <プロファイル名> -b <Firefox本体のフルパス>

これでバッチファイルを作っとくといいかも

これを使ってもいいんだけど

これでも毎回再起動しないとプログラムの変更を確認できないしまだちょっと不便

再起動無しでファイルの更新を自動的に反映する

もっと便利なやり方を見つけたので結局上のやり方は使わずこっちにした

初めてでも理解できるようになる「Firefox機能拡張の開発」 | OXY NOTES

watchpostを使うとフォルダ内を監視してファイルに更新があると自動的にxpiを作りなおして再起動無しで変更が反映されるらしい
こりゃすごい

jpm

テスト環境のFirefox(プロファイル)には Extension Auto-Installer アドオンをインストールしておく

Extension Auto-Installer :: Add-ons for Firefox

あとは

jpm watchpost --post-url http://localhost:8888/

とするだけでテスト環境のFirefoxに自動的に最新の状態のアドオンが入る
これも同じくバッチファイルにしておくと楽
watchpostを立ち上げるのとExtension Auto-Installerアドオンが入ったFirefoxを立ち上げるのはどちらが先でも大丈夫みたい

ただしこの方法はjpmのコンソール上にエラーやデバッグ情報が一切表示されなくなるのでブラウザコンソールしか使用できなくなる

これでGreasemonkeyスクリプトの開発とほぼ同じくらいの快適さになった

Add-on SDKのconsole.logをWebコンソールにも表示する

上記の方法をいろいろ試しているうちにブラウザコンソール上にAdd-on SDKからconsole.log()のログが表示されない場合があることに気づいた
オプションなしで立ち上げた時のまっさらなプロファイルじゃないとブラウザコンソールにエラーログしか出ない
もちろんWebコンソールにも出ない
これはおかしい
不便すぎる
それでいろいろ試したり調べたりしてやっと見つけたのがこれ

Changes to console.log behaviour in SDK 1.14 | Mozilla Add-ons Blog

about:configにログレベルの設定があるそうな

about:configから新規作成→文字列で

extensions.sdk.console.logLevel

値は

all

これをすると任意のプロファイルでブラウザコンソールにも出るようになった
しかもWebコンソールにも出るようになった!
なにこれ素敵
ブラウザコンソールはドッキングできないから若干不満があったんだよね

これを見つけるまでが大変だった……
なんでこんな大事な設定を隠しておくのかね