diff --git a/npm-install/action.yml b/npm-install/action.yml index a28ddbc..ce01ea9 100644 --- a/npm-install/action.yml +++ b/npm-install/action.yml @@ -147,13 +147,13 @@ runs: CACHE_PATH="$HOME/.npm" ;; "pnpm") - # pnpm store 路径(通过命令获取,以兼容自定义配置) - if command -v pnpm >/dev/null 2>&1; then - CACHE_PATH="$(pnpm store path)" - else - # 回退:若未能获取,则使用常见默认路径 - CACHE_PATH="$HOME/.pnpm-store" - fi + # 固定 pnpm store 路径到 runner 的临时目录或 HOME,避免在项目根生成 .pnpm-store + # 说明:一些仓库的 .npmrc 可能配置了 store-dir=.pnpm-store,会导致在工作目录创建 .pnpm-store + # 这里通过设置 PNPM_STORE_DIR 环境变量进行覆盖,确保缓存路径稳定可控 + DEFAULT_PNPM_STORE="${RUNNER_TEMP:-$HOME}/.pnpm-store" + # 将目录导出到环境,供后续安装步骤使用 + echo "PNPM_STORE_DIR=${DEFAULT_PNPM_STORE}" >> "$GITHUB_ENV" + CACHE_PATH="${DEFAULT_PNPM_STORE}" ;; "yarn") # yarn v1 默认缓存目录(yarn berry 采用不同机制,这里聚焦 v1 常见场景) @@ -165,6 +165,11 @@ runs: ;; esac fi + # 打印最终缓存目录,便于调试与确认 + echo "📁 最终缓存目录: ${CACHE_PATH}" + if [[ "$MANAGER" == "pnpm" ]]; then + echo "📦 PNPM_STORE_DIR=${PNPM_STORE_DIR:-$DEFAULT_PNPM_STORE}" + fi echo "path=${CACHE_PATH}" >> $GITHUB_OUTPUT - name: 拉取缓存依赖