huskyをmonorepo環境に導入した
4414 ワード
ディレクトリ構成
こんな感じのmonorepo
project
- .git
- /api
- /ui (← Next.js + TypeScript)
やりたいこと
-
project/ui/
配下で、コミットするときに、prettierやlintをフックしたい
入れたもの
- husky 4.3.7
- lint-staged 10.5.3
はまった点
project/ui/
配下で、コミットするときに、prettierやlintをフックしたい- husky 4.3.7
- lint-staged 10.5.3
はまった点
最初、project/ui/
配下のpackage.jsonにhuskyとlint-stagedを入れてたら、フックされなかった。
monorepoの場合、huskyはroot(.git/
と同階層)に入れておかないといけないようだ。
https://typicode.github.io/husky/#/?id=monorepo
ちなみにhuskyでなくpre-commitでやる場合も同様のようだ。
https://stackoverflow.com/questions/42864386/npm-pre-commit-not-working
これで動いた
project/package.json
"scripts": {
"precommit-ui": "npm run precommit --prefix ./ui"
},
"husky": {
"hooks": {
"pre-commit": [
"npm run precommit-ui"
]
}
},
"devDependencies": {
"husky": "^4.3.7"
}
project/ui/package.json
"scripts": {
"eslint": "eslint --ext .ts,.tsx ./",
"format": "prettier --write ./pages",
"precommit": "lint-staged"
},
"lint-staged": {
"*.{ts,tsx}": [
"format",
"eslint"
]
},
project/package.json
"scripts": {
"precommit-ui": "npm run precommit --prefix ./ui"
},
"husky": {
"hooks": {
"pre-commit": [
"npm run precommit-ui"
]
}
},
"devDependencies": {
"husky": "^4.3.7"
}
project/ui/package.json
"scripts": {
"eslint": "eslint --ext .ts,.tsx ./",
"format": "prettier --write ./pages",
"precommit": "lint-staged"
},
"lint-staged": {
"*.{ts,tsx}": [
"format",
"eslint"
]
},
huskyのフックはrootのpackage.jsonに記述し、下の階層のpackage.jsonのnpm scriptを呼び出している。
まとめ
monorepoにhuskyを入れる場合、projectのrootに入れないと動かない。
Author And Source
この問題について(huskyをmonorepo環境に導入した), 我々は、より多くの情報をここで見つけました https://qiita.com/miyukiw/items/242376bd4b166d65be0d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .