diff --git a/pnpm-install/action.yml b/pnpm-install/action.yml index a3c69a6..a3b258c 100644 --- a/pnpm-install/action.yml +++ b/pnpm-install/action.yml @@ -38,7 +38,7 @@ inputs: clean-project-store: description: '安装后清理项目根目录的 .pnpm-store (true/false)' required: false - default: 'true' + default: 'false' outputs: cache-hit: @@ -126,7 +126,6 @@ runs: fi # 构建缓存 key - PNPM_VERSION="${PNPM_VERSION}" CACHE_KEY="${{ runner.os }}-${CACHE_PREFIX}-pnpm-v${PNPM_VERSION}-${CACHE_HASH_SHORT}" RESTORE_PREFIX="${{ runner.os }}-${CACHE_PREFIX}-pnpm-v${PNPM_VERSION}-" @@ -148,16 +147,28 @@ runs: exit 1 fi - STORE_DIR_CANDIDATE=$(pnpm store path --silent 2>/dev/null | grep -v '^[[:space:]]*$' | tail -n1 | tr -d '\r\n') + # 优先级:Docker 默认路径 > pnpm store path + STORE_DIR_CANDIDATE="" + + # 1. 检查 Docker 环境默认路径 + if [[ -d "/pnpm/store" ]]; then + STORE_DIR_CANDIDATE="/pnpm/store" + echo "📝 检测到 Docker 环境,使用默认路径: $STORE_DIR_CANDIDATE" + # 2. 通过 pnpm 命令获取 + else + STORE_DIR_CANDIDATE=$(pnpm store path --silent 2>/dev/null | grep -v '^[[:space:]]*$' | tail -n1 | tr -d '\r\n') + if [[ -n "$STORE_DIR_CANDIDATE" ]]; then + echo "📝 通过 pnpm store path 获取: $STORE_DIR_CANDIDATE" + fi + fi if [[ -z "$STORE_DIR_CANDIDATE" ]]; then - echo "❌ pnpm store path 未返回有效路径" >&2 - echo "💡 提示: 可在运行前设置 PNPM_HOME 环境变量或检查 pnpm 配置" >&2 + echo "❌ 无法确定 pnpm store 路径" >&2 + echo "💡 提示: 确保 pnpm 配置正确或检查 /pnpm/store 目录" >&2 exit 1 fi echo "📦 pnpm store 路径: $STORE_DIR_CANDIDATE" - echo "PNPM_STORE_DIR=${STORE_DIR_CANDIDATE}" >> "$GITHUB_ENV" echo "path=${STORE_DIR_CANDIDATE}" >> "$GITHUB_OUTPUT" - name: 拉取缓存