fix(githooks): use simple NVM loading (same as .bashrc)

Replace complex pnpm-finding fallback with the same NVM loading
syntax used in ~/.bashrc. Removes the multiple candidate-path
fallback loop in favor of a clean shell snippet.
This commit is contained in:
2026-06-15 13:02:46 +08:00
parent b7e048ed87
commit d3e134d247
6 changed files with 5 additions and 29 deletions
+5 -21
View File
@@ -37,27 +37,11 @@ else
fi
cd "$REPO_TOPLEVEL" || { echo "FATAL: cannot cd to $REPO_TOPLEVEL" >&2; exit 1; }
# 加**载** nvm**非**交互 shell **不**自动 source .bashrc
# nvm 是 POSIX **兼**容,但**有**个**问**题:它**会** [ -n "$BASH_VERSION" ] ****查,
# 在 dash **下** nvm 函**数**注**册**失败(pnpm **仍**然**找**不**到**)。
# 所以策略是:尝**试** source nvm**如**果失**败**则**直**接**找** pnpm **可执**行文件路径。
PNPM_BIN="$(command -v pnpm 2>/dev/null || true)"
if [ -z "$PNPM_BIN" ] && [ -s "$HOME/.nvm/nvm.sh" ]; then
\. "$HOME/.nvm/nvm.sh" 2>/dev/null || true
PNPM_BIN="$(command -v pnpm 2>/dev/null || true)"
fi
# 兜底:**直**接**搜**索 **常**见 nvm 路**径**
if [ -z "$PNPM_BIN" ]; then
for candidate in /root/.nvm/versions/node/*/bin/pnpm "$HOME/.local/share/pnpm/pnpm" /usr/local/bin/pnpm; do
if [ -x "$candidate" ]; then
PNPM_BIN="$candidate"
break
fi
done
fi
if [ -n "$PNPM_BIN" ]; then
export PATH="$(dirname "$PNPM_BIN"):$PATH"
fi
# 加**载** nvm**非**交互 shell **不**自动 source .bashrcpnpm **所**以**找**不**到**
# 同 .bashrc **里**的 NVM ****载逻辑
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# ============================================================
# 1. init_log_file —— 定**义** LOG_FILE + 创**建** logs/ 目**录**