Private
Public Access
1
0

refactor: Claude Code 安装方式从官方原生脚本改为 npm install
Some checks failed
Deploy to Cloudflare Pages / deploy (push) Failing after 11s

国内用户无法访问 claude.ai/install.sh,统一三个工具的安装路径:
- 移除 setup.sh/ps1 中 Claude Code 的特殊安装分支
- ClaudeCode 独立脚本添加 Node.js/fnm 检测安装函数链
- 三个工具均使用 npm install -g 安装 (需要 Node.js >= 20)
- 更新 CLAUDE.md 和文档中的安装说明
This commit is contained in:
2026-02-28 19:38:00 +08:00
parent f1ab858212
commit 34c950057c
8 changed files with 521 additions and 115 deletions

View File

@@ -19,6 +19,7 @@ CLAUDE_CONFIG_DIR="$HOME/.claude"
CLAUDE_SETTINGS_FILE="$CLAUDE_CONFIG_DIR/settings.json"
TOOL_COMMAND="claude"
TOOL_NAME="Claude Code"
TOOL_PACKAGE="@anthropic-ai/claude-code"
# ========== Shell 环境变量配置 ==========
get_shell_rc() {
@@ -82,14 +83,115 @@ print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# ========== Node.js 环境检测 ==========
get_node_version() {
if command -v node >/dev/null 2>&1; then
node --version 2>/dev/null | sed 's/v//'
fi
}
get_node_major_version() {
local version
version=$(get_node_version)
if [ -n "$version" ]; then
echo "$version" | cut -d. -f1
fi
}
install_fnm() {
echo ""
print_info "正在安装 fnm (Fast Node Manager)..."
if curl -fsSL https://fnm.vercel.app/install | bash; then
export PATH="$HOME/.local/share/fnm:$PATH"
if [ -f "$HOME/.local/share/fnm/fnm" ]; then
eval "$(~/.local/share/fnm/fnm env)"
fi
if command -v fnm >/dev/null 2>&1; then
print_success "fnm 安装成功!"
return 0
else
print_warning "fnm 可能已安装,但需要重新打开终端才能生效"
print_info "请重新打开终端后再运行此脚本"
return 1
fi
else
print_error "fnm 安装失败"
return 1
fi
}
install_node_with_fnm() {
print_info "使用 fnm 安装 Node.js 24.x..."
if fnm install 24 && fnm use 24 && fnm default 24; then
eval "$(fnm env)"
if command -v node >/dev/null 2>&1; then
local version
version=$(get_node_version)
print_success "Node.js v$version 安装成功!"
return 0
else
print_warning "Node.js 可能已安装,但需要重新打开终端才能生效"
return 1
fi
else
print_error "Node.js 安装失败"
return 1
fi
}
ensure_node_environment() {
local version major
version=$(get_node_version)
if [ -n "$version" ]; then
major=$(get_node_major_version)
print_info "检测到 Node.js v$version"
if [ "$major" -lt 20 ]; then
print_warning "Node.js 版本过低 (需要 >= 20.x)"
read -p "是否使用 fnm 安装 Node.js 24.x? (Y/n): " -r
if [[ $REPLY =~ ^[Nn]$ ]]; then
print_error "Node.js 版本不满足要求,请手动升级后重试"
return 1
fi
if ! command -v fnm >/dev/null 2>&1; then
install_fnm || return 1
fi
install_node_with_fnm || return 1
fi
return 0
fi
print_warning "未检测到 Node.js"
print_info "将使用 fnm 安装 Node.js 24.x"
read -p "是否继续? (Y/n): " -r
if [[ $REPLY =~ ^[Nn]$ ]]; then
return 1
fi
if ! command -v fnm >/dev/null 2>&1; then
install_fnm || return 1
fi
install_node_with_fnm || return 1
}
install_tool() {
print_info "使用官方安装脚本安装 $TOOL_NAME..."
echo " 执行: curl -fsSL https://claude.ai/install.sh | bash"
ensure_node_environment || return 1
if bash -c 'set -o pipefail; curl -fsSL https://claude.ai/install.sh | bash'; then
export PATH="$HOME/.local/bin:$PATH"
hash -r 2>/dev/null || true
print_info "使用 npm 安装 $TOOL_NAME..."
echo " 执行: npm install -g $TOOL_PACKAGE"
if npm install -g "$TOOL_PACKAGE"; then
if command -v "$TOOL_COMMAND" >/dev/null 2>&1; then
print_success "$TOOL_NAME 安装成功!"
return 0