Help us understand the problem. What is going on with this article?

node.jsのモジュールを使ってChrome拡張機能を作る

More than 3 years have passed since last update.

久々にChrome拡張機能を作ろうとした時、node.jsのパッケージとか使ってES2015で書きたいなーと思って探してみたところ、generator-chrome-extension-kickstartというめっちゃ便利なテンプレがあったので紹介したいと思います。

どういうもの?

generator-chrome-extension-kickstartyeomanという雛形生成ツールを使って、gulpwebpackbabelが使えるChrome拡張機能開発環境を構築してくれます。
これを使う利点は、node.jsのモジュールが使えるES2015で書けるといったことが挙げられます。(ES2015に関してはブラウザが対応しつつありますが…)
また、gulpでwatchしておくと、コード編集後にすぐにブラウザで試せるので、とても便利です。
また、Chrome以外にもFirefoxやOpera向けの拡張機能も生成できるようです。

インストール

yeomangenerator-chrome-extension-kickstartをグローバルインストールします。

$ npm install -g yo generator-chrome-extension-kickstart

インストールできたら、ディレクトリを作成して移動し、雛形を生成コマンドを実行します。

$ mkdir my-new-chrome-extension && cd $_
$ yo chrome-extension-kickstart

幾つかの質問に答え終わると雛形が生成され、自動的にnpm installされます。

? What would you like to call this extension? my new chrome extension
? And how would you call it if you only had 12 characters (short_name)? myChromeApp
? How would you like to describe this extension? Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.
? Would you like to use UI Action? Browser
? Would you like to a override chrome page? No
? Would you like more UI Features?
? Would you like to use permissions?
? Would you like to install promo images for the Chrome Web Store? No
   create package.json
   create gulpfile.babel.js
   create tasks/lib/applyBrowserPrefixesFor.js
   create tasks/lib/args.js
   create tasks/build.js
   create tasks/clean.js
   create tasks/default.js
   create tasks/fonts.js
   create tasks/images.js
   create tasks/livereload.js
   create tasks/locales.js
   create tasks/manifest.js
   create tasks/pack.js
   create tasks/pages.js
   create tasks/scripts.js
   create tasks/styles.js
   create tasks/version.js
   create README.md
   create .gitignore
   create .gitattributes
   create .eslintrc
   create .editorconfig
   create app/manifest.json
   create app/pages/popup.html
   create app/scripts/popup.js
   create app/styles/popup.less
   create app/images/icon-19.png
   create app/images/icon-38.png
   create app/scripts/background.js
   create app/scripts/lib/livereload.js
   create app/_locales/en/messages.json
   create app/images/icon-16.png
   create app/images/icon-128.png
   create app/images/icon-large.svg
   create app/fonts/.gitkeep

開発

開発時は主にappディレクトリの中にあるファイルを編集することになります。
下のようにnpmスクリプトを実行しておくと、ファイルの変更を検知して、自動的にdistディレクトリにビルド後のファイルを出力してくれます。

$ npm run dev:chrome

Chrome拡張機能のページ(chrome://extensions)を開いて、「パッケージ化されていない拡張機能を読み込む...」ボタンを押し、dist/chromeディレクトリを選択してブラウザに拡張機能を適応させましょう。

リリース

Chrome ウェブストアにアップロードするために、作成したChrome拡張機能をzipにまとめたい時は、以下のコマンドを実行します。

$ npm run build:chrome

そうするとpackagesディレクトリにzipファイルが生成されます。
このコマンドでビルドする時は、JavaScriptやCSSのファイルはminifyしてくれます!
このzipファイルはそのままChrome ウェブストアにアップロードできます。

まとめ

generator-chrome-extension-kickstartを使うことで、gulp、webpack、babelでChrome拡張機能を作れるようになれます。
普段から頻繁にnode.jsのモジュールやES2015の記法を使ってる人にはすごく便利なツールだと思うので、これを使ってスマートにChrome拡張機能を開発しましょう!

abcang
JavaScriptとかRubyとかがすきです
https://abcang.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした