☕
M1 Macでコミットしようとしたらhusky > pre-commit (node v12.17.0)と怒られた話
簡潔にいうと
- huskeyで怒られたら
package.json
で何しようとしてるか見ようね - (今回においては)PHP入れようね
環境
- Vue + Laravelで構成されたWebサイト開発
- Node.js v12.17.0 使用
- コミットするときに一緒にlint系も動くようになっている
起こったこと
上記既存プロジェクトに新規でジョインして git commit
しようとしたら
husky > pre-commit (node v12.17.0)
とエラーになりできなかった。
原因
この世にはhusky(参考)というGitフックツールがある。
Gitのコマンド時に一緒にやってほしいもの(フォーマットとかテストとか)を設定できる子らしい。
nodeを使用しているのでhuskyの設定は package.json
で行っているっぽく、そこを確認してみる。
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
"pre-commit": "yarn exec lint-staged",
"pre-push": "branchlint"
}
},
husky > pre-commit
の記載の通り、今回はpre-commitのタイミングでやっている lint-staged
が原因っぽい。
これはプロジェクトで設定しているものっぽく、同じく package.json
に記載があった。
"lint-staged": {
"resources/**/*.{js,jsx,vue}": [
"eslint --fix",
"git add"
],
"resources/**/*.{css,scss}": [
"stylelint --fix",
"git add"
],
"resources/**/*.blade.php": [
"blade-formatter -c",
"git add"
],
"**/*.php": [
"./vendor/bin/php-cs-fixer fix --config=.php_cs.dist --dry-run -v --stop-on-violation --using-cache=no",
"git add"
],
"*.{png,jpeg,jpg,gif,svg}": [
"imagemin-lint-staged",
"git add"
]
},
こんな感じでプロジェクトで使っている各ファイルのlintやformatをしているのだが、
改めてエラーを見てみると
✖ ./vendor/bin/php-cs-fixer fix --config=.php_cs.dist --dry-run -v --stop-on-violation --using-cache=no:
env: php: No such file or directory
と言われていた。
どうやら "./vendor/bin/php-cs-fixer fix --config=.php_cs.dist --dry-run -v --stop-on-violation --using-cache=no",
PHPを使用するらしく
M1 MacにはデフォルトでPHPが入っていないのでエラーだったよう。
Homebrewを経由してPHPを入れて完了。
※ 参考(PHPのドキュメント): https://www.php.net/manual/ja/install.macosx.packages.php
Discussion