diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 00000000..5efa2ac0 --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,8 @@ +pre-commit: + parallel: true + commands: + eslint: + glob: "*.{js,ts,jsx,tsx,md,mdx}" + run: npm run lint # ESLint / Prettier が勝手にコードを壊すのを防ぐため、 lint:fix はしていない。 + exclude: "contents" + # stage_fixed: true # ↑を lint:fix に変更する場合、これを uncomment すること diff --git a/package-lock.json b/package-lock.json index e85aad66..847c4f91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,7 @@ "eslint": "^8.56.0", "eslint-config-airbnb-typescript-prettier": "^5.0.0", "gatsby-plugin-postcss": "^6.13.1", + "lefthook": "^1.9.2", "postcss": "^8.4.33", "prettier": "^2.8.8", "tailwindcss": "^3.4.1", @@ -13163,6 +13164,169 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lefthook": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-1.9.2.tgz", + "integrity": "sha512-boUWdXdT6MUPghZuuX64xXbG7u69fcgkD6vNEjoxh3Gll6o6MfY/ITpj/HrRAUVym1jWXB0Z298qL789OD+dZw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "lefthook": "bin/index.js" + }, + "optionalDependencies": { + "lefthook-darwin-arm64": "1.9.2", + "lefthook-darwin-x64": "1.9.2", + "lefthook-freebsd-arm64": "1.9.2", + "lefthook-freebsd-x64": "1.9.2", + "lefthook-linux-arm64": "1.9.2", + "lefthook-linux-x64": "1.9.2", + "lefthook-openbsd-arm64": "1.9.2", + "lefthook-openbsd-x64": "1.9.2", + "lefthook-windows-arm64": "1.9.2", + "lefthook-windows-x64": "1.9.2" + } + }, + "node_modules/lefthook-darwin-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-kWcSqAdGu5MAtxdLBpxg8H+p4d/pO7tA7+3Q1Cj9NM+c0L3R2ZefGNStGF6Ftbu8grkpz9/jCD588O9PHjsVfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/lefthook-darwin-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-darwin-x64/-/lefthook-darwin-x64-1.9.2.tgz", + "integrity": "sha512-M4zspEhp0uXaIEVkcPFYayxElFzFhhSfEk29FMhxZOfbmZYPUSYaSsTHgb7oeR0O0/zcMTVDk4nNWsBp2Jpx5A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/lefthook-freebsd-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.9.2.tgz", + "integrity": "sha512-7Grb+wdY99Iuorw9aUu+zYKdkEaQs6OVGn4jgav+AyBSxJA0WZmXgdmZqd6+LuRVYn8JRO8bER8Tu4QUa1fSxg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/lefthook-freebsd-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.9.2.tgz", + "integrity": "sha512-tMBN//hqHMUJ9v7k9W3l9aMEBw//enEX+2eQLcvDJSuEE+J3AUbNg9YA5kTpVsDuafg10ziJXAuGD0kYh2ubww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/lefthook-linux-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-linux-arm64/-/lefthook-linux-arm64-1.9.2.tgz", + "integrity": "sha512-U16CUCaQSRQTbjqvrsJrwppCK4d/IQjMimfC/SwAEreXr7WkBiekV+Gv+fytEnVHJTCSb5MajJTV+WpBsg6jGg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/lefthook-linux-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-linux-x64/-/lefthook-linux-x64-1.9.2.tgz", + "integrity": "sha512-lkEes30MquDhiIrNQ61CfNvGLCN39d8PZ2S/dwLMJBtTH7qfVqXu8UR3KhKEDD1h43cEb4pnIeO2BJUZyn/FNw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/lefthook-openbsd-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.9.2.tgz", + "integrity": "sha512-UJKcL8Iiga8GetYqXqGXy6OeIhtNGim8PHQZH4nfR70s6TPvTvBEGvf48mvfwRyXt8t6aUvz1oyVvRQSdXETug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/lefthook-openbsd-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.9.2.tgz", + "integrity": "sha512-CLS119Fn91mZ2U7ug3fjYMfM7rvwB7gwpDUbuQlEPnVsHJOtaIpu+cmhnKKtU6b4B6r5ETMwhc5dDt/tS5curQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/lefthook-windows-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-windows-arm64/-/lefthook-windows-arm64-1.9.2.tgz", + "integrity": "sha512-MlN2EnYNF6RUMTGX4csJnHq/J+werlerQsUcYfZrs+TruXCm4MLjwO9Q7vShTws3bsCoeDZnacNTVESQpZG6Lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/lefthook-windows-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lefthook-windows-x64/-/lefthook-windows-x64-1.9.2.tgz", + "integrity": "sha512-7gl1L3qj6xWsqsYJ/ACRDUJruMWLqIRGcI66RiAEnQ3aSnnk0FLCVxIyMwecgW3IWY1O2C69EXV4Og7/0l9JVQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/legacy-swc-helpers": { "name": "@swc/helpers", "version": "0.4.14", diff --git a/package.json b/package.json index 4fe44064..bf8a673e 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,9 @@ "serve": "gatsby serve", "clean": "gatsby clean", "lint": "eslint .", - "type-check": "tsc --noEmit" + "lint:fix": "eslint . --fix", + "type-check": "tsc --noEmit", + "prepare": "lefthook install" }, "dependencies": { "@headlessui/react": "^1.7.18", @@ -49,6 +51,7 @@ "eslint": "^8.56.0", "eslint-config-airbnb-typescript-prettier": "^5.0.0", "gatsby-plugin-postcss": "^6.13.1", + "lefthook": "^1.9.2", "postcss": "^8.4.33", "prettier": "^2.8.8", "tailwindcss": "^3.4.1",