diff --git a/npm-install/action.yml b/npm-install/action.yml index 2940722..4947fe7 100644 --- a/npm-install/action.yml +++ b/npm-install/action.yml @@ -217,16 +217,13 @@ runs: # node_modules 模式:不要回退到 cache-path(那是 node_modules 目录),而是使用 RUNNER_TEMP/HOME export PNPM_STORE_DIR="${PNPM_STORE_DIR:-${RUNNER_TEMP:-$HOME}/.pnpm-store}" fi + # 通过多通道环境变量覆盖(兼容不同版本/解析顺序) + export npm_config_store_dir="${PNPM_STORE_DIR}" + export PNPM_CONFIG_STORE_DIR="${PNPM_STORE_DIR}" echo "🧩 已设置 PNPM_STORE_DIR=${PNPM_STORE_DIR}" + echo "🔎 pnpm 配置: store-dir=$(pnpm config get store-dir || echo '')" fi - # 可选清理:如启用并发现项目根存在残留的 .pnpm-store,且与目标目录不同,则清理 - if [[ "${{ inputs.package-manager }}" == "pnpm" && "${{ inputs.clean-project-store }}" == "true" ]]; then - if [[ -d ".pnpm-store" && "${PNPM_STORE_DIR}" != "$PWD/.pnpm-store" ]]; then - echo "🧹 清理项目根的残留 .pnpm-store(目标store为 ${PNPM_STORE_DIR})" - rm -rf .pnpm-store || true - fi - fi # 如果提供了自定义安装命令,使用自定义命令 if [[ -n "${{ inputs.install-command }}" ]]; then echo "🔧 使用自定义安装命令: ${{ inputs.install-command }}" @@ -283,6 +280,16 @@ runs: ;; esac fi + + # 可选清理:如启用并发现项目根存在残留的 .pnpm-store,且与目标目录不同,则清理 + if [[ "${{ inputs.package-manager }}" == "pnpm" && "${{ inputs.clean-project-store }}" == "true" ]]; then + # 进一步在项目级设置覆盖一次,杜绝 .npmrc 相对路径带来的影响(仅对本 CI 工作目录生效) + pnpm config set store-dir "${PNPM_STORE_DIR}" --location=project || true + if [[ -d ".pnpm-store" && "${PNPM_STORE_DIR}" != "$PWD/.pnpm-store" ]]; then + echo "🧹 清理项目根的残留 .pnpm-store(目标store为 ${PNPM_STORE_DIR})" + rm -rf .pnpm-store || true + fi + fi echo "✅ 依赖安装完成"