chore(release): local-deploy.sh CLI publish 優先用 .env NPM_API_TOKEN

互動 npm login 常因 publish 安全政策 403;改優先讀 .env 的 NPM_API_TOKEN
(authToken 方式)publish,無 token 才退回 npm whoami。token 不入 log。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
uncle6me-web
2026-06-06 17:33:14 +08:00
parent 44b915554b
commit 0620fb5601
+16 -3
View File
@@ -278,18 +278,31 @@ if [[ "${DRY_RUN:-false}" != "true" ]]; then
echo " · 已 bump → $NEW_V,並記錄進 $CHANGELOG(記得 commit 這兩個檔)" echo " · 已 bump → $NEW_V,並記錄進 $CHANGELOG(記得 commit 這兩個檔)"
fi fi
if ! npm whoami >/dev/null 2>&1; then # 優先用 .env 的 NPM_API_TOKENauthToken)——互動 npm login 常因 publish 政策 403。
echo " ⚠ 未 npm loginnpm whoami 失敗),跳過 publish。手動:cd cli && npm publish" # 無 token 才退回 npm whoami(互動登入)。token 不入 log。
NPM_TOK=""
if [[ -f .env ]]; then
NPM_TOK=$(grep '^NPM_API_TOKEN=' .env 2>/dev/null | head -1 | cut -d= -f2- | tr -d '"'"'"' \r\n')
fi
PUB_RC=""
if [[ -n "$NPM_TOK" ]]; then
PUB_RC=$(mktemp)
printf '//registry.npmjs.org/:_authToken=%s\n' "$NPM_TOK" > "$PUB_RC"
fi
if [[ -z "$NPM_TOK" ]] && ! npm whoami >/dev/null 2>&1; then
echo " ⚠ 無 .env NPM_API_TOKEN 且未 npm login,跳過 publish。手動:cd cli && npm publish"
FAILED+=("cli:npm-publish(未登入)") FAILED+=("cli:npm-publish(未登入)")
else else
echo " 📦 publish arcrun $REMOTE_V$LOCAL_V ..." echo " 📦 publish arcrun $REMOTE_V$LOCAL_V ..."
if (cd cli && npm run build >/dev/null 2>&1 && npm publish --access public 2>&1 | tail -3); then if (cd cli && npm run build >/dev/null 2>&1 && \
NPM_CONFIG_USERCONFIG="${PUB_RC:-$HOME/.npmrc}" npm publish --access public 2>&1 | tail -3); then
echo " ✅ npm publish 完成(arcrun@$LOCAL_V" echo " ✅ npm publish 完成(arcrun@$LOCAL_V"
else else
echo " ❌ npm publish 失敗" echo " ❌ npm publish 失敗"
FAILED+=("cli:npm-publish") FAILED+=("cli:npm-publish")
fi fi
fi fi
[[ -n "$PUB_RC" ]] && rm -f "$PUB_RC"
fi fi
fi fi