2017/12/20
Githubで草を生やす活動は楽しいですね!
増えてきて芝みたいになると達成感があって、モチベーションも上がります。
ところで、この前の10/30に草がハロウィン仕様になっていたのを見て、
草を自分の好みの色を変更できればもっと楽しくなるのでは?と思い
草の色が変更できる(ついでにお絵描きもできる)Chrome Extensionを作りました。
その時にgenerator-chrome-extension-kickstart-typescriptを使って、TypeScriptで簡単にChrome Extensionが作れたので、アプリ作成から公開までの手順をまとめます。
yomanとgenerator-chrome-extension-kickstart-typescriptで簡単に雛形が作れるのでコレらを使っていきます。
yoman
とgenerator-chrome-extension-kickstart-typescript
をグローバルインストールします$ npm install -g yo generator-chrome-extension-kickstart-typescript
yo
コマンドで雛形を生成します$ mkdir project
$ cd project
$ yo chrome-extension-kickstart-typescript
No
,Browser
,Page
のいずれかを選択します
No
・・・ UI Actionを使わない場合Browser
・・・ ツールバーの右にアイコンが常駐するタイプのChrome拡張を作成する場合Page
・・・ 特定のWebサイト観覧時のみにアドレスバー右にアイコンが表示されるタイプのChrome拡張を作成する場合No
,Bookmarks Page
,History Page
,Newtab Page
のいずれかを選択しますOptions Page
・・・ オプション画面を作りたい場合Devtools Page
・・・ 開発者ツールを拡張したい場合Content Scripts
・・・ Webで表示している画面にJavaScriptを差し込んで何か処理をしたい場合Omnibox
・・・ アドレスバーを拡張したい時に選択※自分は下記のように答えました
What would you like to call this extension? => github-contributions-paint
And how would you call it if you only had 12 characters (short_name)? => github-paint
How would you like to describe this extension? => You can paint github contributions!
Would you like to use UI Action? => Browser
Would you like to override a chrome page? => No
Would you like more UI Features? => Content Scripts
Would you like to use permissions? => Tabs
Would you like to install promo images for the Chrome Web Store? => Yes
github-contributions-paint
├── README.md
├── app
│ ├── images ・・・Chromeウェブストア公開時に必要なアイコン格納フォルダ
│ │ ├── icon-128.png
│ │ ├── icon-16.png
│ │ ├── icon-19.png
│ │ └── icon-38.png
│ ├── manifest.json ・・・Chrome拡張の設定を定義するファイル
│ ├── pages ・・・HTMLファイル格納フォルダ
│ │ └── popup.html ・・・Chrome拡張のアイコンをクリックした時に表示するポップアップ画面用資産
│ ├── scripts ・・・TSファイル格納フォルダ
│ │ ├── background.ts ・・・バックグランド処理を記述するファイル
│ │ └── popup.ts ・・・Chrome拡張のアイコンをクリックした時に表示するポップアップ画面用資産
│ ├── styles ・・・CSSファイル格納フォルダ
│ │ └── popup.scss ・・・Chrome拡張のアイコンをクリックした時に表示するポップアップ画面用資産
│ ├── _locales
│ │ └── en
│ │ └── messages.json ・・・アプリの設定ファイル
│ └── fonts
├── promo ・・・Chromeウェブストア公開時に必要な宣伝用画像の格納フォルダ
│ ├── Chrome-Webstore-Icon_128x128.png
│ ├── Promo-Image-Large_920x680.png
│ ├── Promo-Image-Marquee_1400x560.png
│ ├── Promo-Image-Small_440x280.png
│ ├── Screenshot_1280x800.png
│ └── Screenshot_640x400.png
├── dist
├── gulpfile.babel.js
├── node_modules
├── package-lock.json
├── package.json
├── tasks
├── tsconfig.json
└── tslint.json
$ npm install typescript --save-dev
雛形を作成したら早速動かすことができます
$ npm run dev:chrome
するとプロジェクトがChrome Extension管理画面に追加されて、ブラウザ右上にアイコンが表示されます
雛形の動作検証ができたらTypeScriptファイルを編集して処理を追加していきます。
npm run dev:chrome
を実行した後、下記手順繰り返すことで、ソースコードを修正しながら随時動作検証ができます。
アプリを公開する前に、アイコンと宣伝用画像を作成し、雛形生成時のデフォルト資産と差し替えます。
デザイナーさんなら苦労しないでしょうが、自分はこれが一番大変でした。
3つのアイコンと3つの宣伝用画像が必要です。
manifest.json
とpackage.json
のバージョン指定を0.0.1にあげます{
・・・
"version": "0.0.1", <- 0.0.0から0.0.1にあげる
・・・
}
{
・・・
"version": "0.0.1", <- 0.0.0から0.0.1にあげる
・・・
}
$ npm run build:chrome
Chromeウェブストアのデベロッパーダッシュボードを開きます。Chromeアカウントでログインします
ファイルを追加
で作成したzipファイル(プロジェクトルート/packages配下にあります)を選択後、アップロード
を選択します
これで公開作業は完了です。しばらくするとChromeウェブストアに公開されます
今回はgenerator-chrome-extension-kickstart-typescriptを使って、TypeScriptでChrome Extensionを作成、公開する手順をまとめました。
最初はTypeScriptでChrome Extensionを作るのは、ビルドの設定など色々めんどくさそうだぁと思っていましたが、
generator-chrome-extension-kickstart-typescriptを使うことで、簡単に作成から公開まで実現できました。
ブラウザでのちょっとした作業を効率化するのにChrome Extentionは非常に強力なツールなので、今後なにかアイディアがあればまた作ってみたいと思います。