From 9e3ffa7ea230ada6b3913913306d7ca5345850c6 Mon Sep 17 00:00:00 2001 From: Lyda <1829913225@qq.com> Date: Thu, 18 Sep 2025 11:51:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BApnpm=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=A6=BB=E7=BA=BF=E5=AE=89=E8=A3=85=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=8F=82=E6=95=B0=E4=BB=A5=E6=8F=90=E5=8D=87=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=91=BD=E4=B8=AD=E6=97=B6=E7=9A=84=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- npm-install/action.yml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/npm-install/action.yml b/npm-install/action.yml index 15684ef..c946eed 100644 --- a/npm-install/action.yml +++ b/npm-install/action.yml @@ -20,7 +20,11 @@ inputs: required: false default: 'store' - + optimize-install-flags: + description: '是否启用安装参数优化(pnpm+store时自动使用 --offline/--prefer-offline 与 --frozen-lockfile)(true/false)' + required: false + default: 'true' + cache-prefix: description: '缓存前缀名称' required: false @@ -208,6 +212,18 @@ runs: if [[ -n "$INSTALL_ARGS" ]]; then echo "➕ 附加安装参数: $INSTALL_ARGS" fi + # 根据模式与缓存命中优化安装参数(尽量离线加速) + EXTRA_FLAGS="" + if [[ "${{ inputs.optimize-install-flags }}" == "true" && "${{ inputs.package-manager }}" == "pnpm" && "${{ inputs.cache-mode }}" == "store" ]]; then + if [[ "${{ steps.cache.outputs.cache-hit }}" == "true" ]]; then + # 缓存命中:使用完全离线与锁定安装,避免网络请求 + EXTRA_FLAGS="--offline --frozen-lockfile" + else + # 缓存未命中:尽量离线,但允许必要网络;同时锁定避免解析差异 + EXTRA_FLAGS="--prefer-offline --frozen-lockfile" + fi + echo "⚡ pnpm安装优化参数: $EXTRA_FLAGS" + fi # 根据包管理器选择安装命令 case "${{ inputs.package-manager }}" in "npm") @@ -222,10 +238,10 @@ runs: "pnpm") if [[ "${{ inputs.force-install }}" == "true" ]]; then echo "🔧 使用pnpm强制安装" - pnpm install --force ${INSTALL_ARGS} + pnpm install --force ${EXTRA_FLAGS} ${INSTALL_ARGS} else echo "🔧 使用pnpm安装" - pnpm install ${INSTALL_ARGS} + pnpm install ${EXTRA_FLAGS} ${INSTALL_ARGS} fi ;; "yarn")