オプションの事前コミットチェックハスキー


JavaScriptプロジェクトに取り組んでいる場合は、おそらくHuskyを使用してチェックしてください.
たぶん、いくつかのきれいな、eslintの書式設定、または入力スクリプトをチェックします.
コミットメッセージをチェックするのは速いですが、あなたのプロジェクトが成長するにつれて、書式設定とタイプチェックの実行はより多くの時間がかかります.
使えますlint-staged 優美さとeslintのために.
しかし、タイプスクリプトチェックのためにそれを使用することは意味がありません.
すべてのエンジニアには異なるワークフローがあります.Typescriptコンパイラから問題を解決するには、tsc --watch プロセスは、何も壊れていることを確認します.
走りたくないtsc --watch 常にそれを実行しているので、ラップトップを遅くします.コミットが10 , 20 , 30 +秒かかる場合でも、このチェックは事前コミット段階で行われます.
しかし、このプレコミットをオプションにする方法?したがって、手動で書式設定や型チェックを行うチームメイトはイライラされません.
husky バージョン7では、bashスクリプトを使用してpre - commit設定を有効にします.では、なぜ実行前にチェックしないのかtsc or lint-staged ?!
これは.husky/pre-commit ファイル
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

APP_PRE_COMMIT_OPTIONS="$(dirname "$0")/_/pre-commit.options"
それで、私たちは、私たちのオプションをpre-commit.options インサイド.husky/_/ フォルダ.

.husky/_/ should have a .gitingore file that will ignore our option file.


次に、オプションファイルが存在しない場合はメッセージを出力しましょう
YELLOW="\033[1;33m"
GREEN="\033[1;32m"
RESET="\033[0m"
if ! [ -f "$APP_PRE_COMMIT_OPTIONS" ]; then
  echo "${YELLOW}\nSkipping pre-commit hook."
  echo "If you want to use pre-commit for TypeScript check and lint-staged, run:\n"
  echo "  ${GREEN}echo -e 'APP_TS=true;\\\nAPP_LINT=true;' > $P_APP_PRE_COMMIT_OPTIONS${RESET}"
  echo ${YELLOW}\nIt will add some delay before committing!\n${RESET}"
  exit 0
fi


次に、オプションファイルをソースし、ユーザがリンギングを有効にしたかどうかを調べます.
source $APP_PRE_COMMIT_OPTIONS

if [ -n "${APP_LINT}" ] && [ "${APP_LINT}" == "true" ]; then
  echo "${GREEN}[husky] [pre-commit] [lint-staged]${RESET}"
  npx lint-staged
fi
必要に応じてより多くのオプションとチェックを追加することができます!

最終結果


The .husky/pre-commit ファイルは以下のようになります.
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

APP_PRE_COMMIT_OPTIONS="$(dirname "$0")/_/pre-commit.options"

YELLOW="\033[1;33m"
GREEN="\033[1;32m"
RESET="\033[0m"
if ! [ -f "$APP_PRE_COMMIT_OPTIONS" ]; then
  echo "${YELLOW}\nSkipping pre-commit hook."
  echo "If you want to use pre-commit for TypeScript check and lint-staged, run:\n"
  echo "  ${GREEN}echo -e 'APP_TS=true;\\\nAPP_LINT=true;' > $P_APP_PRE_COMMIT_OPTIONS${RESET}"
  echo ${YELLOW}\nIt will add some delay before committing!\n${RESET}"
  exit 0
fi

source $APP_PRE_COMMIT_OPTIONS

if [ -n "${APP_TS}" ] && [ "${APP_TS}" == "true" ]; then
  echo "${GREEN}[husky] [pre-commit] [tsc]${RESET}"
  npx tsc
fi

if [ -n "${APP_LINT}" ] && [ "${APP_LINT}" == "true" ]; then
  echo "${GREEN}[husky] [pre-commit] [lint-staged]${RESET}"
  npx lint-staged
fi