Pastalablog in はてな

時代はブログ! 日記もあるよ→http://pastak-diary.hatenadiary.com

Chrome ExtensionをFirefoxが採用予定のWebExtensionとして書き換える際に便利なwemfというコマンドラインツールを作りました

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の略です