PrsPrsBK’s blog

Princess Princess Burn Knuckle

Firefox アドオン開発を web-ext へ移行する:初歩2 (web-ext run 小ネタ)

web-ext run できるようになった、一応

[概要] 前回の続き。web-ext run が思ったようにならなかった。ちょっと困ったことを解消したのでそれを書く。あとは環境変数にオプション指定して動作確認、したところ困難が発生した。環境変数でやるのは止してコマンドラインでオプション指定して次に進む。リファレンスはこれ

--firefox-profile は絶対パスにした

プロファイル指定は名前 (firefox.exe -p で起動してプロファイル選ぶ時の「default」など)か、プロファイルフォルダへの絶対パスということになっている。名前で指定すると、プロファイルがよくあるフォルダ、例えば C:/Users/some_user/AppData/Roaming/Mozilla/Firefox/Profiles/alphnum8.name である場合はうまく行くのだが、別のフォルダ (C:\testprofile とか D:\foo\Profiles\alphnum8.name とか) に置いてあるときはそのプロファイルで起動されなかった。絶対パスならば問題ない。--firefox-profile="D:\path\to\Profiles\alphnum8.name" のようにした。パッと見てイシューにないけどこれ報告したらいいのか?

追記 報告しました #1074

有効でない既存のアドオンを消した

何と書けば正確になるか分からないが、「インストールされたアドオン一覧」で赤文字で「このアドオンはダメです」のように表示されて無効になっているものがあると、プロファイル指定して起動まではできるが、すぐ終了する、かもしれない。実際はアドオンなり Firefox なりの自動更新が関係していた可能性があるが、「ダメです」のアドオン (全部そうだったのだが) を削除したら即座終了は発生しなかった。何年か前に作って放置していたプロファイルで試したらこうなった。

--keep-profile-changes (とりあえず不要)

プロファイルへの変更を保存したい場合は web-ext run --keep-profile-changes --firefox-profile=your-custom-profile らしいが、--keep-profile-changes は デフォルトプロファイルに対してはバグのため現在禁止されているらしく、実行時にメッセージで教えてくれる。危険を知らせてくれて良かった、という感想。

>web-ext run --firefox="C:\path\to\firefox.exe" --firefox-profile="C:\path\to\Profiles\alphnum8.default_marked_user" --keep-profile-changes
Running web extension from c:\path\to\webextensions-examples\beastify
run: UsageError: Cannot use --keep-profile-changes on a default profile ("C:\path\to\Profiles\alphnum8.default_marked_user") because web-ext will make it insecure and unsuitable for daily use.
See https://github.com/mozilla/web-ext/issues/1005

「デフォルト」指定されていなければ --keep-profile-changes できる。「では (普段使っているプロファイルでも何でも) デフォルト指定しなければいいのか? 壊れないのか?」という疑問もあったが、とりあえずは使わないので気にしないことにした。このオプションがない場合、web-ext run ではプロファイルがコピーされるようで、それで足りる。例えば twitter であれば通常の起動をしてログインしておけば、このオプションなしでもそのままログイン状態でいられる。

あとこのオプションなしなら、プロファイルのサイズが大きいとコピーに時間がかかる。普段使ってるものだと嫌になるので、結局新規に開発用のプロファイル作った方が良いと思った。

オプションを環境変数で指定したかった

むずかしい。全然うまくいかない。web-ext build --ignore-files *.bat hoge.txtコマンドラインで指定すれば動くけど環境変数 WEB_EXT_IGNORE_FILES になると狙い通りにならない。まあそれはいいんだけど次が辛い。

web-ext run --firefox="C:\path\to\firefox.exe" が動作して、WEB_EXT_FIREFOX に同じパスを指定してもうまくいく。この状態で web-ext build するとオプションの説明とともに「Unknown argument: firefox」と表示される。大変厳しい。WEB_EXT_FIREFOX_PROFILE も使うと更に web-ext run がすっきりするが、web-ext build の「Unknown argument」が増える。

github のプロジェクトを確認すると Environment variables get applied as options to any command #793 ということなので、全コマンド共通のオプション以外は使えない。環境変数自体を保留にした。よく見たら別のライブラリのイシューになっているがどうなるのだろう。

※2017-09-09 追記 無視してほしいファイルの件はイシューがあった