使いにくい ScombZ のサイドメニューやテストを修正したり、ADFS ボタンの自動スキップができます。よりユーザビリティに優れた ScombZ を提供します。
このプロジェクトは 旧 ScombZ Utilities からのリニューアル版です。 旧コードは以下のリポジトリにあります。
https://github.com/scombz-utilities/scombz-utilities-legacy
環境構築は、ローカルで Node.js
環境を構築する方法と、Dockerを使った方法があります。
パフォーマンス上の理由からローカルでの開発を推奨しますが、環境構築の手間を省くためにDockerを使うこともできます。
ローカルでの環境構築
注意: Nodeのバージョンは必ず.node-version
記載のものに合わせること
nodeのバージョンは20.11.1
で固定とします。
.node-version
ファイルでバージョンを指定しているため、対応したバージョン管理ツールを使ってインストールしてください。
asdfやnodenvなどのバージョン管理ツールを使うとよいでしょう。
このreadmeではnodenv
を使ったガイドを載せます。
asdfで実行する際の注意
asdf
の場合は.node-version
を標準では読み込まないため、~/.asdfrc
に以下の記述を追加してください。
legacy_version_file = yes
nodenvのインストール for Mac
① HomeBrewでnodenvのインストールを行います。
$ brew install nodenv
② ~/.zshrc
の最終行にhookを追加します。以下のコマンド2つを実行してください。
(echoではなく、vim等で直接書き込んでも問題ありません)
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(nodenv init -)"' >> ~/.zshrc
③ このままでは .zshrc
が読み込まれていないので、再読み込みを行います。
$ source ~/.zshrc
④ .node-version
に記載されているnodeのバージョンを確認して下さい。
(記事確認時点では v20.11.1
)
確認したバージョンをnodenvでインストールします。
( .node-version
に記載されているのがv20.11.1でない場合はコマンドを適切に変更してください)
$ nodenv install 20.11.1
⑤ nodenvをリフレッシュします
$ nodenv rehash
⑥ インストールされたnodeのバージョンが合っているかを確認します
$ node -v
nodenvのインストール for Windows (Ubuntu)
ここからは必ずWSL Ubuntuを使用してください
① ビルドツールが無いかもしれないのでインストールします(あればスキップで構わない)
$ sudo apt install build-essential
② 公式の手順でnodenvのインストールを行います(公式)。さらに、 nodenv install
を有効にするため、node-buildもインストールします(野良記事)。
$ git clone https://github.com/nodenv/nodenv.git ~/.nodenv
$ cd ~/.nodenv && src/configure && make -C src
$ git clone https://github.com/nodenv/node-build.git ~/.nodenv/plugins/node-build
③ ~/.bashrc
の最終行にhookを追加します。以下のコマンド2つを実行してください。
(echoではなく、vim等で直接書き込んでも問題ありません)
(bash以外のシェルを使っている場合は出力先を適宜変更してください)
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(nodenv init -)"' >> ~/.bashrc
③ このままでは .bashrc
が読み込まれていないので、再読み込みを行います。
$ source ~/.bashrc
④ .node-version
に記載されているnodeのバージョンを確認して下さい。
(記事確認時点では v20.11.1
)
確認したバージョンをnodenvでインストールします。
( .node-version
に記載されているのがv20.11.1でない場合はコマンドを適切に変更してください)
$ nodenv install 20.11.1
$ nodenv global 20.11.1
⑤ nodenvをリフレッシュします
$ nodenv rehash
⑥ インストールされたnodeのバージョンが合っているかを確認します
$ node -v
このレポジトリでは基本的にパッケージ管理にはnpm
を用います。
以下のコマンドを実行して依存関係をインストールしてください。
$ npm i
以下のコマンドで開発サーバーを立ち上げられます。
build/chrome-mv3-dev
を読み込んでください。
tsxファイル等を更新するとライブローディングされます。
[!TIP] WSL上での開発において、Killedと表示されて完全に終了しない場合、wslの割り当てメモリが少ない可能性があります。
初期の割り当ては搭載メモリの50%なので、.wslconfig
ファイルを作成、または編集し、それ以上を割り当ててください。
$ npm run dev
以下のコマンドでビルドできます。 ChromeとFireFoxに対応したビルドがそれぞれ生成されます。
$ npm run build
Dockerでの環境構築
- (まだの場合は)Docker Desktopをインストールしてください。
- 以下のコマンドを実行して必要なモジュールをインストールしてください。makeコマンドが使えない場合は、makeをインストールするか、直接docker-composeコマンドを実行してください。
$ make i
or
$ docker compose run --rm app npm i
以下のコマンドで開発サーバーを立ち上げられます。
build/chrome-mv3-dev
を読み込んでください。
tsxファイル等を更新するとライブローディングされます。
$ make dev
or
$ docker compose run --rm app npm run dev
以下のコマンドでビルドできます。 ChromeとFireFoxに対応したビルドがそれぞれ生成されます。
$ make build
or
$ docker compose run --rm app npm run build
ScombZ utilitiesでは、Chrome Web Store、Firefox Add-ons、Microsoft Edge Add-onsにて一般用に配布しています。 全てのストアで自動的に公開するために、publish-browser-extensionを利用しています。
.env.submit.template
ファイルをコピーして.env.submit
ファイルを作成します。- 開発リーダーに
.env.submit
ファイルの内容を共有してもらい、必要な情報を入力します。 - 以下のコマンドを実行して、ストアへの公開を行います。
npm run publish
を実行すると、各ストアに自動的に公開されます。
開発においてコーディングルールをeslintに定義しています。
VScodeでは自動的にルールに合っているか解析+ルールに合ったように整形を行うことができるため、以下の拡張機能をインストールしてください。
VScodeのユーザー設定は.vscode
ディレクトリ内に定義済みのため特に変える必要はない(はず)です。
- 基本的にすべてのコードは
src
、すべての外部ファイルはassets
内に記載します。 - content_scriptはなるべくページ単位で
contents
ディレクトリ直下に記載してください。 contents
ファイル直下に1機能につき1つのts
もしくはtsx
ファイルを設置し、コンポーネントや共通モジュールを定義する場合はcomponents
やutil
内に記載してimportで読み込んでください。- Plasmoとの相性が悪いためLintではあえて指定していませんが、基本的に変数名はキャメルケースで統一します。特別な事情がない限りスネークケースは使わないでください。
- DOM操作は可読性のために
tsx
ではなくts
ファイル内に記述してください。同じ機能でts
とtsx
の両方が必要になる場合、tsx
でPlasmoの読み込みを行いuseEffect
等でtsを読み込みます。 - ライブラリを追加する場合、共同開発者は全員が再度
npm i
をする必要が生じます。影響範囲も大きいので必ず相談をしてください。 - 関数定義の際
function
は使わずアロー関数で定義します。 - 基本的にはJSX構文ではMUIコンポーネントを使ってください。