From 75b194bdfbcca0d0e9146a8bff3806b832897064 Mon Sep 17 00:00:00 2001 From: Lyda <1829913225@qq.com> Date: Thu, 21 Aug 2025 10:19:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=20npm-install=20GitH?= =?UTF-8?q?ub=20Action=20=E7=9A=84=E9=94=81=E6=96=87=E4=BB=B6=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E7=AE=80=E5=8C=96=E9=94=81?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=A3=80=E6=B5=8B=E6=AD=A5=E9=AA=A4=EF=BC=8C?= =?UTF-8?q?=E7=A1=AE=E4=BF=9D=E6=A0=B9=E6=8D=AE=E4=B8=8D=E5=90=8C=E5=8C=85?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=99=A8=E6=AD=A3=E7=A1=AE=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=BC=93=E5=AD=98key=EF=BC=8C=E6=8F=90=E5=8D=87=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E7=AE=A1=E7=90=86=E7=9A=84=E7=81=B5=E6=B4=BB=E6=80=A7?= =?UTF-8?q?=E5=92=8C=E5=8F=AF=E9=9D=A0=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- npm-install/action.yml | 57 ++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/npm-install/action.yml b/npm-install/action.yml index 6d43a69..7ea66c9 100644 --- a/npm-install/action.yml +++ b/npm-install/action.yml @@ -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}"