最速で git commit ごとに ESLint と Prettier を効かせる方法(小ネタ)


1. pre-commit スクリプトを作成

# 適当なフォルダをプロジェクト直下に作成
mkdir .githooks

↑のフォルダへ pre-commit という名前のシェルスクリプト↓を作成。

.githooks/pre-commit
#!/bin/sh
npm run lint && npm run format

スクリプトに実行フラグを立てる。

chmod +x .githooks/pre-commit

2. NPM スクリプトを用意

package.json
  "scripts": {
    "lint": "eslint --fix .",
    "format": "prettier --write .",
    "prepare": "git config --local core.hooksPath .githooks"
  }
  • preparenpm install 時に実行されるスクリプト
  • コミットフックのスクリプト(たち)を納めたフォルダを core.hooksPath へ指定

3. コミットフックを登録

  1. Git レポジトリとして初期化
git init

Initialized empty Git repository in /Users/Foo/git-hooks/.git/
  1. npm install を実行する
npm install

> prepare
> git config --local core.hooksPath .githooks

up to date, audited 137 packages in 495ms

17 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

4. コミットを実行

# ステージング
git add .

# コミット実行
git commit -m "first commit"                                    

> lint
> eslint --fix .

> format
> prettier --write .

.eslintrc.json 21ms
.prettierrc.json 1ms
package-lock.json 41ms
package.json 5ms
src/hello.js 7ms
src/index.js 2ms
[main (root-commit) cc38732] first commit
 10 files changed, 2829 insertions(+)
 create mode 100644 .eslintignore
 create mode 100644 .eslintrc.json
 create mode 100755 .githooks/pre-commit
 create mode 100644 .gitignore
 create mode 100644 .prettierignore
 create mode 100644 .prettierrc.json
 create mode 100644 package-lock.json
 create mode 100644 package.json
 create mode 100644 src/hello.js
 create mode 100644 src/index.js

以上で完了。