mirror of
https://git.bjxgj.com/xgj/xgj-actions.git
synced 2025-10-14 03:53:37 +08:00
feat: 优化 npm-install GitHub Action 的锁文件处理逻辑,简化锁文件检测步骤,确保根据不同包管理器正确生成缓存key,提升缓存管理的灵活性和可靠性。
This commit is contained in:
@@ -52,37 +52,39 @@ outputs:
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: 检测锁文件
|
||||
id: detect-lockfile
|
||||
shell: bash
|
||||
run: |
|
||||
LOCKFILE="${{ inputs.lockfile-name }}"
|
||||
# 根据包管理器自动检测lock文件
|
||||
if [[ "${{ inputs.package-manager }}" == "pnpm" ]]; then
|
||||
LOCKFILE="pnpm-lock.yaml"
|
||||
elif [[ "${{ inputs.package-manager }}" == "yarn" ]]; then
|
||||
LOCKFILE="yarn.lock"
|
||||
fi
|
||||
|
||||
# 如果用户没有指定lockfile-name且是npm,则使用package-lock.json
|
||||
if [[ "${{ inputs.lockfile-name }}" == "package-lock.json" && "${{ inputs.package-manager }}" != "npm" ]]; then
|
||||
if [[ "${{ inputs.package-manager }}" == "pnpm" ]]; then
|
||||
LOCKFILE="pnpm-lock.yaml"
|
||||
elif [[ "${{ inputs.package-manager }}" == "yarn" ]]; then
|
||||
LOCKFILE="yarn.lock"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "lockfile=${LOCKFILE}" >> $GITHUB_OUTPUT
|
||||
echo "使用锁文件: ${LOCKFILE}"
|
||||
|
||||
- name: 生成缓存key
|
||||
id: cache-key
|
||||
shell: bash
|
||||
env:
|
||||
LOCKFILE_HASH: ${{ hashFiles(steps.detect-lockfile.outputs.lockfile) }}
|
||||
NPM_HASH: ${{ hashFiles('package-lock.json') }}
|
||||
PNPM_HASH: ${{ hashFiles('pnpm-lock.yaml') }}
|
||||
YARN_HASH: ${{ hashFiles('yarn.lock') }}
|
||||
run: |
|
||||
LOCKFILE="${{ steps.detect-lockfile.outputs.lockfile }}"
|
||||
# 根据包管理器确定锁文件和对应的hash
|
||||
case "${{ inputs.package-manager }}" in
|
||||
"npm")
|
||||
if [[ "${{ inputs.lockfile-name }}" != "package-lock.json" ]]; then
|
||||
LOCKFILE="${{ inputs.lockfile-name }}"
|
||||
LOCKFILE_HASH="${NPM_HASH}"
|
||||
else
|
||||
LOCKFILE="package-lock.json"
|
||||
LOCKFILE_HASH="${NPM_HASH}"
|
||||
fi
|
||||
;;
|
||||
"pnpm")
|
||||
LOCKFILE="pnpm-lock.yaml"
|
||||
LOCKFILE_HASH="${PNPM_HASH}"
|
||||
;;
|
||||
"yarn")
|
||||
LOCKFILE="yarn.lock"
|
||||
LOCKFILE_HASH="${YARN_HASH}"
|
||||
;;
|
||||
*)
|
||||
LOCKFILE="${{ inputs.lockfile-name }}"
|
||||
# 对于自定义情况,使用npm hash作为默认
|
||||
LOCKFILE_HASH="${NPM_HASH}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# 截取hash的前12位
|
||||
if [[ -n "${LOCKFILE_HASH}" && "${LOCKFILE_HASH}" != "" ]]; then
|
||||
@@ -94,7 +96,8 @@ runs:
|
||||
|
||||
CACHE_KEY="${{ runner.os }}-${{ inputs.cache-prefix }}-${LOCKFILE_HASH_SHORT}"
|
||||
echo "key=${CACHE_KEY}" >> $GITHUB_OUTPUT
|
||||
echo "锁文件: ${LOCKFILE}"
|
||||
echo "lockfile=${LOCKFILE}" >> $GITHUB_OUTPUT
|
||||
echo "使用锁文件: ${LOCKFILE}"
|
||||
echo "文件hash: ${LOCKFILE_HASH}"
|
||||
echo "缓存key: ${CACHE_KEY}"
|
||||
|
||||
|
Reference in New Issue
Block a user