haixunMaster/Makefile

103 lines
3.5 KiB
Makefile
Raw Permalink Normal View History

2026-06-21 12:50:31 +00:00
# 巡樓 Haixun — 快速啟動與程序管理
# 需求Node.js 20+、npm、pm2npm i -g pm2
SHELL := /bin/bash
ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
PORT ?= 3000
PM2 := $(shell command -v pm2 2>/dev/null)
.PHONY: help init db-init install build up start dev stop restart status logs down \
2026-06-21 16:28:26 +00:00
playwright-setup playwright-deps save
2026-06-21 12:50:31 +00:00
help:
@echo "巡樓 Haixun — 常用指令"
@echo ""
@echo " 初始化"
@echo " make init 首次設定(安裝依賴 + 建立 .env + 初始化 DB"
@echo " make db-init 僅同步 Prisma schema 到資料庫"
@echo " make install 僅 npm install"
@echo ""
@echo " 啟動PM2"
@echo " make start build 後以 PM2 啟動 web + worker生產"
@echo " make up 不 build直接 PM2 啟動 web + worker"
@echo " make dev PM2 啟動開發伺服器next dev不含 worker"
@echo " make stop 停止所有 Haixun 程序"
@echo " make restart 重啟所有 Haixun 程序"
@echo " make down 停止並移除 PM2 程序"
@echo " make status 查看 PM2 狀態"
@echo " make logs 查看 PM2 日誌web + worker"
@echo " make save 儲存 PM2 程序列表(開機自動啟動用)"
@echo ""
@echo " 其他"
@echo " make build next build"
@echo " make playwright-setup 安裝 Chromium 與 Playwright 依賴"
2026-06-21 16:28:26 +00:00
@echo " make playwright-deps 安裝 Playwright 系統函式庫apt"
2026-06-21 12:50:31 +00:00
@echo ""
@echo " 環境變數PORT=$(PORT)(預設 3000"
init:
@bash "$(ROOT)/scripts/init.sh"
db-init:
@test -f "$(ROOT)/.env" || (cp "$(ROOT)/.env.example" "$(ROOT)/.env" && echo "已建立 .env")
@cd "$(ROOT)" && npm run db:generate && npm run db:push
@echo "資料庫 schema 已同步"
install:
@cd "$(ROOT)" && npm install
build:
@cd "$(ROOT)" && npm run build
check-pm2:
ifndef PM2
@echo "錯誤:找不到 pm2請執行npm install -g pm2" >&2
@exit 1
endif
up: check-pm2
@chmod +x "$(ROOT)/scripts/"pm2-*.sh "$(ROOT)/scripts/init.sh"
@cd "$(ROOT)" && PORT=$(PORT) pm2 start ecosystem.config.cjs --only haixun-web,haixun-worker
@echo "已啟動haixun-web (http://localhost:$(PORT))、haixun-worker"
@echo "查看狀態make status"
start: build up
dev: check-pm2
@chmod +x "$(ROOT)/scripts/"pm2-*.sh
@cd "$(ROOT)" && PORT=$(PORT) pm2 start ecosystem.config.cjs --only haixun-web-dev
@echo "開發伺服器http://localhost:$(PORT)"
@echo "查看日誌pm2 logs haixun-web-dev"
stop: check-pm2
@cd "$(ROOT)" && pm2 stop haixun-web haixun-worker haixun-web-dev 2>/dev/null || true
@echo "已停止"
restart: check-pm2
@cd "$(ROOT)" && pm2 restart haixun-web haixun-worker 2>/dev/null || $(MAKE) up
@echo "已重啟"
down: check-pm2
@cd "$(ROOT)" && pm2 delete haixun-web haixun-worker haixun-web-dev 2>/dev/null || true
@echo "已移除 PM2 程序"
status: check-pm2
@pm2 status haixun-web haixun-worker haixun-web-dev 2>/dev/null || pm2 status
logs: check-pm2
@pm2 logs haixun-web haixun-worker --lines 100
save: check-pm2
@pm2 save
@echo "PM2 程序列表已儲存(搭配 pm2 startup 可開機自啟)"
2026-06-21 16:28:26 +00:00
playwright-deps:
@echo "安裝 Playwright 系統函式庫..."
@sudo apt-get install -y libatk1.0-0 libatk-bridge2.0-0t64 libcups2t64 \
libdrm2 libdbus-1-3 libxkbcommon-x11-0 libxcomposite1 libxdamage1 \
libxrandr2 libgbm1 libpango-1.0-0 libcairo2 libasound2t64
@echo "Playwright 系統函式庫安裝完成"
2026-06-21 12:50:31 +00:00
playwright-setup:
@cd "$(ROOT)" && npm run playwright:setup