Skip to content

Instantly share code, notes, and snippets.

@x7ddf74479jn5
Last active August 10, 2022 15:08
Show Gist options
  • Save x7ddf74479jn5/59b51fb4023a9e581185f0aa9c30e17d to your computer and use it in GitHub Desktop.
Save x7ddf74479jn5/59b51fb4023a9e581185f0aa9c30e17d to your computer and use it in GitHub Desktop.
モノレポ構成でhusky設定方法

モノレポ構成で husky 設定方法

モノレポ構成であれば root ディレクトリに.gitディレクトリを作るので、サブディレクトリの/frontend側から husky を走らせたいとき.gitへの参照が取得できず失敗する。

構成

├── /frontend
│   ├── ...
│   └── package.json
└── /backend
    ├── ...
    └── package.json

方法

普通に cd する。

1. husky install

/frontend で実行

yarn add -D husky lint-staged
{
  ...
  "scripts": {
    "prepare": "cd .. && husky install frontend/.husky"
  },
  ...
}
yarn install
// どちらでも
yarn prepare

2. hook 生成

npx husky add .husky/pre-commit "cd frotnend && npx lint-staged"

ここまでの成果物

/frontend
├── .husky
│   ├── .gitignore
│   ├── _
│   │   └── husky.sh
│   └── pre-commit
└── package.json

.husky/pre-commit

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

cd frontend && npx lint-staged

別解

workspace 機能を使う。

{
  ...
  "name": "frontend",
  "scripts": {
    "prepare": "cd .. && husky install frontend/.husky",
    "lint-staged": "lint-staged"
  },
  ...
}
npx husky add .husky/pre-commit "yarn workspaces frontend run lint-staged"

.husky/pre-commit

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

yarn workspaces frontend run lint-staged

参考

.git と package.json が同一ディレクトリにいないプロジェクトで husky をつかう

[husky 6.x] Custom directory で pre-commit する

七転八起 - 深いディレクトリ階層に husky を適用する場合の手順

特定のディレクトリに変更があるときだけ husky(prettier)を走らせる | サイナビ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment