常用指令
測試
npm test 會執行 tests/api.test.ts 和 tests/i18n.test.ts。api.test.ts 會匯入其餘的測試檔案,因此一個指令就能執行全部測試。偵錯時,也可以用 tsx 單獨執行某個檔案:
專案結構
新增介面文案
文案定義在app/i18n/messages.ts 中。簡體中文原文就是鍵,其他三種語言則是值:
app/i18n/messages.ts
t("历史记录") 使用。新增文案時,請同時提供 zh-TW、en 和 ko 三種翻譯,i18n.test.ts 會檢查完整性。
持續整合
.github/workflows/docker.yml 會在推送到任何分支、推送 v* 標籤、提交 Pull Request 或手動觸發時執行:
1
驗證
使用 Node.js 22 依序執行
npm ci、npm test、npm run lint 和 npm run build。2
建置映像檔
驗證通過後建置 Docker 映像檔。一般分支和 Pull Request 只建置
linux/amd64,用來檢查映像檔能否成功建置。3
發布映像檔
推送到預設分支、
howendev/dev 分支或任何標籤時,會同時建置 linux/amd64 和 linux/arm64,並在設定了 Docker Hub secrets 時推送多架構映像檔。映像檔標籤
Docker Hub secrets
在 GitHub 儲存庫中開啟 Settings → Secrets and variables → Actions,新增:
未設定這兩個 secrets 時,工作流程只會建置映像檔而不推送,並輸出一則警告。
Docker 映像檔
Dockerfile 以 node:22-alpine 進行多階段建置,並使用 Next.js standalone 輸出:
- 執行階段以非 root 使用者
nextjs執行。 - 預設監聽
0.0.0.0:3002。 - 映像檔包含
LICENSE、NOTICE、LICENSING.md和LICENSES/授權檔案。
