claude-code/Makefile

103 lines
4.4 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.PHONY: help install check-deps install-claude install-mcp-deps \
mcp-context7 mcp-github mcp-firecrawl mcp-supabase mcp-memory \
mcp-sequential-thinking mcp-magic mcp-filesystem mcp-railway \
install-go-tools install-python-tools install-pm2 clean
help:
@echo ""
@echo "Claude Code 工具箱 — 安裝指令"
@echo "=============================="
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-28s\033[0m %s\n", $$1, $$2}'
@echo ""
install: check-deps install-mcp-deps ## 一鍵安裝所有依賴
@echo ""
@echo "✅ 全部安裝完成!"
@echo ""
@echo "下一步:"
@echo " 1. 將需要的 MCP server 設定複製到 ~/.claude.json"
@echo " 2. 需要 API Key 的 server 請先設定環境變數"
@echo " 3. 執行 claude 開始使用"
@echo ""
check-deps: ## 檢查前置工具是否已安裝
@echo "🔍 檢查前置工具..."
@command -v node >/dev/null 2>&1 || { echo "❌ 需要 Node.js >= 18"; exit 1; }
@command -v npm >/dev/null 2>&1 || { echo "❌ 需要 npm"; exit 1; }
@command -v git >/dev/null 2>&1 || { echo "❌ 需要 Git"; exit 1; }
@echo " ✓ Node.js $$(node -v)"
@echo " ✓ npm $$(npm -v)"
@echo " ✓ Git $$(git --version | cut -d' ' -f3)"
@command -v claude >/dev/null 2>&1 \
&& echo " ✓ Claude Code CLI" \
|| echo " ⚠️ Claude Code CLI 未安裝(執行 make install-claude)"
@echo ""
install-claude: ## 安裝 Claude Code CLI
npm install -g @anthropic-ai/claude-code
install-mcp-deps: ## 安裝所有免費 MCP server 依賴
@echo "📦 預先安裝 MCP server npm 套件..."
@$(MAKE) --no-print-directory mcp-context7
@$(MAKE) --no-print-directory mcp-github
@$(MAKE) --no-print-directory mcp-memory
@$(MAKE) --no-print-directory mcp-sequential-thinking
@$(MAKE) --no-print-directory mcp-magic
@$(MAKE) --no-print-directory mcp-filesystem
@echo ""
@echo "📋 需要 API Key 的 MCP(請自行安裝):"
@echo " make mcp-firecrawl — FIRECRAWL_API_KEY"
@echo " make mcp-supabase — project-ref"
@echo " make mcp-railway — Railway 登入"
@echo ""
@echo "📋 HTTP 類型不需安裝:vercel, cloudflare-*, clickhouse"
mcp-context7: ## Context7(即時技術文件查詢)
@printf " 📦 context7... " && npx --yes @context7/mcp-server --help >/dev/null 2>&1; echo "✓"
mcp-github: ## GitHub MCP(需要 GITHUB_PERSONAL_ACCESS_TOKEN)
@printf " 📦 github... " && npx --yes @modelcontextprotocol/server-github --help >/dev/null 2>&1; echo "✓"
mcp-firecrawl: ## Firecrawl MCP(需要 FIRECRAWL_API_KEY)
@printf " 📦 firecrawl... " && npx --yes firecrawl-mcp --help >/dev/null 2>&1; echo "✓"
mcp-supabase: ## Supabase MCP(需要 project-ref)
@printf " 📦 supabase... " && npx --yes @supabase/mcp-server-supabase@latest --help >/dev/null 2>&1; echo "✓"
mcp-memory: ## Memory MCP(跨 session 記憶)
@printf " 📦 memory... " && npx --yes @modelcontextprotocol/server-memory --help >/dev/null 2>&1; echo "✓"
mcp-sequential-thinking: ## Sequential Thinking MCP(鏈式推理)
@printf " 📦 sequential-thinking... " && npx --yes @modelcontextprotocol/server-sequential-thinking --help >/dev/null 2>&1; echo "✓"
mcp-magic: ## Magic UI MCP(UI 元件)
@printf " 📦 magic... " && npx --yes @magicuidesign/mcp@latest --help >/dev/null 2>&1; echo "✓"
mcp-filesystem: ## Filesystem MCP(檔案系統操作)
@printf " 📦 filesystem... " && npx --yes @modelcontextprotocol/server-filesystem --help >/dev/null 2>&1; echo "✓"
mcp-railway: ## Railway MCP(部署管理)
@printf " 📦 railway... " && npx --yes @railway/mcp-server --help >/dev/null 2>&1; echo "✓"
install-go-tools: ## Go 輔助工具(golangci-lint, deadcode)
@command -v go >/dev/null 2>&1 || { echo "❌ 需要先安裝 Go"; exit 1; }
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install golang.org/x/tools/cmd/deadcode@latest
@echo "✅ Go 工具安裝完成"
install-python-tools: ## Python 輔助工具(ruff, mypy, bandit, black)
@command -v python3 >/dev/null 2>&1 || { echo "❌ 需要先安裝 Python 3"; exit 1; }
pip3 install ruff mypy bandit black isort
@echo "✅ Python 工具安裝完成"
install-pm2: ## PM2 程序管理器
npm install -g pm2
@echo "✅ PM2 安裝完成"
clean: ## 清理 npx 快取
npm cache clean --force 2>/dev/null || true
@echo "✅ 清理完成"