Gazelle
2022年04月07日公開 133 Views

Gitでcommitする前にソースコードを自動で修正する方法

gatsbyjsフレームワークでpluginとしてpreactという、reactの軽量化Versionを入れているのだが、何故かこれがdevelopment buildでは動かず、productionでは動くという問題が生じている。なのでdevelopment時は

   plugins: [
     // `gatsby-plugin-preact`, // enable this for production
     {
       resolve: `gatsby-plugin-manifest`,

とpluginをコメントアウトしているのだが、コミットする時に間違えたままコミットするのを防ぎたいというのが目的である。

huskyを導入

image.png
このコミットタイミングで特定のコードを実行するnpm libraryがhuskyである。今回はこれを使う。
まず公式ドキュメントに従い、推奨されているnpxのコマンドをたたく

$ npx husky-init && npm install
Need to install the following packages:
  husky-init
Ok to proceed? (y) y
husky-init updating package.json
  setting prepare script to command "husky install"
husky - Git hooks installed
husky - created .husky/pre-commit

please review changes in package.json

> gatsby-starter-hello-world@0.1.0 prepare
> husky install

husky - Git hooks installed

するとcommit時に走るファイルが.husky/pre-commit以下に生成される。

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npm test

次に、npm testとdefaultで書かれている部分を変更する。

$ sed -i -e "s/\/\/ \`gatsby-plugin-preact\`/\`gatsby-plugin-preact\`/" gatsby-config.js
$ git add gatsby-config.js

sedでconfigファイルの置換を行なっているが、置換した部分を再度addする必要がある。ただ難点としては、gatsby-configの他の個所を修正していたとしてもaddされてしまうというところ。まあ自分の運用上問題にはならなそうなので良いか。

関連記事

javascriptとjquery、cssを使用してトップへ戻るボタンを作成。考え方も含めて説明していきます。
2020年03月23日
Googleスプレッドシートとスクリプト言語Google App Script(GAS)を使用して青色申告含む確定申告を行ったのでまとめ
2020年03月28日
reduxで理解すべきimmutable objectの概念を深めていく。
2021年01月19日
ホームへ戻る