diff --git a/npm-install/action.yml b/npm-install/action.yml index ab416b7..6d43a69 100644 --- a/npm-install/action.yml +++ b/npm-install/action.yml @@ -52,8 +52,8 @@ outputs: runs: using: 'composite' steps: - - name: 生成缓存key - id: cache-key + - name: 检测锁文件 + id: detect-lockfile shell: bash run: | LOCKFILE="${{ inputs.lockfile-name }}" @@ -73,10 +73,29 @@ runs: fi fi - CACHE_KEY="${{ runner.os }}-${{ inputs.cache-prefix }}-$(echo '${{ hashFiles('${LOCKFILE}') }}' | head -c 12)" - echo "key=${CACHE_KEY}" >> $GITHUB_OUTPUT echo "lockfile=${LOCKFILE}" >> $GITHUB_OUTPUT echo "使用锁文件: ${LOCKFILE}" + + - name: 生成缓存key + id: cache-key + shell: bash + env: + LOCKFILE_HASH: ${{ hashFiles(steps.detect-lockfile.outputs.lockfile) }} + run: | + LOCKFILE="${{ steps.detect-lockfile.outputs.lockfile }}" + + # 截取hash的前12位 + if [[ -n "${LOCKFILE_HASH}" && "${LOCKFILE_HASH}" != "" ]]; then + LOCKFILE_HASH_SHORT=$(echo "${LOCKFILE_HASH}" | head -c 12) + else + echo "⚠️ 警告: 无法计算锁文件hash,使用默认值" + LOCKFILE_HASH_SHORT="no-lockfile" + fi + + CACHE_KEY="${{ runner.os }}-${{ inputs.cache-prefix }}-${LOCKFILE_HASH_SHORT}" + echo "key=${CACHE_KEY}" >> $GITHUB_OUTPUT + echo "锁文件: ${LOCKFILE}" + echo "文件hash: ${LOCKFILE_HASH}" echo "缓存key: ${CACHE_KEY}" - name: 拉取缓存依赖