2026-06-21 12:50:31 +00:00
|
|
|
|
# 巡樓 Haixun — 快速啟動與程序管理
|
|
|
|
|
|
# 需求:Node.js 20+、npm、pm2(npm 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
|