オプションの事前コミットチェックハスキー
JavaScriptプロジェクトに取り組んでいる場合は、おそらくHuskyを使用してチェックしてください.
たぶん、いくつかのきれいな、eslintの書式設定、または入力スクリプトをチェックします.
コミットメッセージをチェックするのは速いですが、あなたのプロジェクトが成長するにつれて、書式設定とタイプチェックの実行はより多くの時間がかかります.
使えますlint-staged 優美さとeslintのために.
しかし、タイプスクリプトチェックのためにそれを使用することは意味がありません.
すべてのエンジニアには異なるワークフローがあります.Typescriptコンパイラから問題を解決するには、
走りたくない
しかし、このプレコミットをオプションにする方法?したがって、手動で書式設定や型チェックを行うチームメイトはイライラされません.
husky バージョン7では、bashスクリプトを使用してpre - commit設定を有効にします.では、なぜ実行前にチェックしないのか
これは
次に、オプションファイルが存在しない場合はメッセージを出力しましょう
次に、オプションファイルをソースし、ユーザがリンギングを有効にしたかどうかを調べます.
The
たぶん、いくつかのきれいな、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
Reference
この問題について(オプションの事前コミットチェックハスキー), 我々は、より多くの情報をここで見つけました https://dev.to/strdr4605/optional-pre-commit-checks-with-husky-5ei6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol