環境配置
說明開發、測試與生產環境的差異,以及各環境的啟動與部署方式。
環境總覽
| 項目 | 開發環境 | 測試/生產環境 |
|---|---|---|
| 執行位置 | 本地電腦 | Java Application Server (Tomcat) |
| 原始碼 | 有 | 無(已封裝) |
| 啟動方式 | npm run dev / ./gradlew bootRun | WAR 部署 |
| MSW 預設 | 啟用 | 停用 |
軟體需求
開發環境
| 組件 | 版本需求 | 說明 |
|---|---|---|
| Java | 21+ | 後端執行與建置 |
| Gradle | 8.x | 專案已包含 Gradle Wrapper |
| Node.js | 22.x | 前端執行與建置 |
| npm | 10.x | 套件管理 |
| Database | H2(內建) | 開發環境預設,無需額外安裝 |
測試/生產環境
| 組件 | 版本需求 | 說明 |
|---|---|---|
| Java | 21+ | 執行 WAR |
| Tomcat | 10.1+ | Java Application Server |
| Node.js | 22.x | 建置用(CI/CD 環境) |
| Database | MySQL 8.0+ / PostgreSQL 15+ / SQL Server 2012+ | 擇一 |
| Memory | 至少 2GB RAM | 建議 4GB 以上 |
| Storage | 至少 10GB | 視資料量調整 |
建置與執行分離
測試/生產環境的伺服器只需要 Java 和 Tomcat。Node.js 僅在 CI/CD 建置階段需要,執行階段不需要。
開發環境
在本地電腦直接執行,具有原始程式碼:
# 前端
cd app-web && npm run dev # http://localhost:3000
cd app-web-mockup && npm run dev # http://localhost:3001
# 後端
cd app-server && ./gradlew bootRun # http://localhost:8080/app-server
開發環境下,MSW 自動啟用,無需額外配置。
測試/生產環境
所有模組以 WAR 封裝,部署至 Tomcat:
┌─────────────────────────────────────────────────┐
│ Tomcat │
│ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ app-web.war │ │ app-server.war│ │
│ └───────────────┘ └───────────────┘ │
│ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │app-web-mockup │ │ app-docs.war │ │
│ │ .war │ │ │ │
│ └───────────────┘ └───────────────┘ │
└─────────────────────────────────────────────────┘
WAR 封裝關係
前端模組透過托管層專案封裝成 WAR:
| 前端模組 | 托管層專案 | WAR 產出 |
|---|---|---|
| app-web | app-web-host | app-web.war |
| app-web-mockup | (相同技術) | app-web-mockup.war |
| app-docs | app-docs-host | app-docs.war |
建置指令
# app-web.war
cd app-web-host && ./gradlew build
# 產出:build/libs/app-web-*.war
# app-docs.war
cd app-docs-host && ./gradlew build
# 產出:build/libs/app-docs-*.war
MSW 配置
MSW(Mock Service Worker)用於攔截 API 請求並返回 Mock 資料,適用於前端獨立開發、Demo 展示或後端 API 尚未實作的情境。
設計原則
- 封裝後預設停用:避免生產環境意外啟用 Mock API
- 程式碼一致性:app-web-mockup 與 app-web 共用相同邏輯
- 明確啟用:需要時透過配置明確啟用
各環境 MSW 狀態
| 環境 | app-web | app-web-mockup | 說明 |
|---|---|---|---|
開發 (npm run dev) | 啟用 | 啟用 | 自動啟用 |
| 測試/生產 (WAR) | 停用 | 停用 | 需明確啟用 |
測試環境啟用 MSW
在外部配置檔案中啟用:
${app.home}/conf/app-web.yaml:
app:
msw:
enabled: true
環境變數覆蓋
也可透過環境變數覆蓋:APP_MSW_ENABLED=true
使用情境
| 情境 | MSW | 後端 | 說明 |
|---|---|---|---|
| 前端獨立開發 | 啟用 | 不需要 | 無需後端即可開發 |
| 前後端整合測試 | 停用 | 需要 | 測試真實 API |
| Demo 展示 | 啟用 | 不需要 | 快速展示功能 |
| 生產環境 | 停用 | 需要 | 使用真實 API |