Chrome Extensionのpackage.jsonをWebExtensionに対応するように変換してくれるコマンド作った。Firefoxがサポート済のAPIのみを利用しているなら、これで変換すれば動くようになるはず https://t.co/leu3lEEmwo
— 特別になり太郎 (@pastak) February 6, 2016
Firefox46 が Developer Edition としてリリースされました。 WebExtensionはFirefox46でalpha stateということになっています。
このまま順調に行けば、 2016-08-02にリリースされる予定の*1Firefox48でstable releaseになります。
また上記ブログ記事でも触れられていますが、 addons.mozilla.org (AMO) にアップロードして署名をすることが出来るようになっています。
先日、WebExtension現状確認してみた - Pastalablog in はてなという記事を書いて現状を確認しました。最近まで結構大きめのバグ*2があって、動かせるExtensionがかなりシンプルなものだけだったのですが、先日それも解消されてかなりの数のExtensionが動くようになっています。
動くようには具体的にはこの2つのことを行う必要があります。
- 未実装JavaScript APIの利用を避ける
- manifest.jsonの書き換え
と言っても2つとも Chrome incompatibilities - Mozilla | MDN にChromeとの差分が書かれているので、ここに書かれている通りにすればOKです。
今回作ったwemf
というコマンドラインツール*3は、上記の作業のうちのmanifest.jsonの書き換え作業をシュッとやってくれるツールです。
やってくれることは以下のことです。
- 必ず含まれているべきキーと対応する値を追加
- 未対応のキーを削除
- 現状未対応のキーがあるとインストールに失敗するので、そのようなキーを削除します。
- 未対応のキーワードの使用を通知
web_accessible_resources
でワイルドカードが使えないなどがあるので、そのようなキーワードを含んでいる場合は削除せずに通知します。
% npm install -g wemf
でインストールし、% wemf /dir/chrome-ext/package.json -O /dir/firefox-ext/package.json
で変換したものを出力してくれます。
また、--validate
オプションを利用することでmanifest.jsonの簡単なバリデーションチェックが出来ます。(厳密な値のチェックなどをするのではなく、未対応のキーを含んでいないかなどをチェックするだけです)
詳しい使い方はリポジトリのREADMEや--help
などを見てください。
ちなみに今のv0.2.1
は2015-02-06 (JST) 時点でmanifest.json - Mozilla | MDN に書かれている情報を基に実装しています。
何か更新があれば極力追随するつもりですが、何かあればPRがください。
*1:https://wiki.mozilla.org/RapidRelease/Calendar
*2:https://bugzilla.mozilla.org/show_bug.cgi?id=1208257 ChromeExtensionのドキュメントでoptionalになっている引数を解釈出来ないというバグ
*3:名前は WebExtension Manifest Formatterの略です