Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9145

huskyでgit hooksを作成して開発自動化を行う

$
0
0
これは何 huskyというライブラリを使用して、git commit時やgit push時にコマンドを実行する方法をお伝えする記事です。 git commit時にフォーマッタを適用させたり、git push時にテストを実行したり、開発自動化を進める時などに有効です。 対象読者 gitを使用しており、開発自動化を進めたい方 huskyの使い方を学びたい方 huskyとは gitで特定のアクションを行った際に、コマンドを実行してタスクを行う(これをgit hooksとも言います)ための仕組みを提供するライブラリです(Node.js環境があれば利用可能) huskyを使用することで、git pushした時にテストコードを実行させるなどが可能となります lint-stagedと組み合わせることで「ステージングしているファイル」や「コミットしたファイル」に対してのみコマンドを実行させる、ということが可能となります huskyの使い方 環境 以下の環境で動作確認を行いました。 名前 バージョン windows10 Node.js 12.13.0 npm 6.12.0 yarn 1.21.1 husky 4.2.1 インストール npmを使用する場合 npm install -D husky yarnを使用する場合 yarn add -D husky package.jsonへの記述 (関係のない記述は省略しております) { "devDependencies": { "husky": "^4.2.1", }, "husky": { "hooks": { "pre-commit": "git commit時に実行したいコマンド", "pre-push": "git push時に実行したいコマンド" } } } 例:git commit時にeslintとprettierを適用させたい (eslintとprettierはインストール済みであることを前提とします) package.jsonの記述 (git commit時にルートディレクトリ配下のファイルに対してprettierとeslintによる修正を行います) { "devDependencies": { "eslint": "^7.24.0", "eslint-config-prettier": "^6.11.0", "husky": "^4.2.1", "prettier": "^2.0.5", }, "husky": { "hooks": { "pre-commit": "prettier --write . && eslint --fix ." } } } 例:git push時にJestのテストを実行させたい package.jsonの記述 { "devDependencies": { "jest": "^27.0.4", "husky": "^4.2.1", }, "husky": { "hooks": { "pre-push": "jest" } } } lint-stagedとの組み合わせ lint-stagedと組み合わせることで、「git commit時にはステージング中のファイルに対してのみ」「git push時にはcommitしたファイルに対してのみ」コマンドを実行することができます。 package.jsonの記述 "pre-commit": "lint-staged --allow-empty"の箇所では、単に"pre-commit": "lint-staged"と記述した場合、以下のエラーが出てしまう場合があるため空コミットを許容するようにしています。 参考 Prevented an empty commit! また、lint-stagedのバージョン10以降ではコマンド実行後のgit addは不要(自動でgit addされる)ため記述しておりません。 { "devDependencies": { "eslint": "^7.24.0", "eslint-config-prettier": "^6.11.0", "husky": "^4.2.1", "lint-staged": "^10.0.7", "prettier": "^2.0.5" }, "husky": { "hooks": { "pre-commit": "lint-staged --allow-empty" } }, "lint-staged": { "**/*.{css,html,js}": [ "prettier --write" ], "**/*.js": [ "eslint --fix" ] } } git commit時にステージングしたファイルに対してのみprettierやeslintを適用させます。 エラーが無い場合、git commitが行われます。 エラーがある場合、以下のようなメッセージがターミナル上に表示されてgit commitは行われません。 154:5 warning Unexpected console statement no-console 158:17 error 'event' is defined but never used no-unused-vars ✖ 15 problems (1 errors, 1 warnings) husky > pre-commit hook failed (add --no-verify to bypass) 参考 husky の pre-commit が(また)動かない 【JavaScript】コミットする前にlint-stagedでeslintのチェックをする

Viewing all articles
Browse latest Browse all 9145

Trending Articles