常用命令
测试
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/许可证文件。
