mirror of
https://github.com/KivotosRailway/website.git
synced 2026-11-03 11:06:32 +09:00
59 lines
2.9 KiB
Markdown
59 lines
2.9 KiB
Markdown
# KivotosRailway Website
|
|
|
|
KivotosRailway 的官方网站。本站提供新闻、政策与免责声明、友情链接和错误页面,并支持简体中文、繁體中文、English、日本語。
|
|
|
|
## 技术栈
|
|
|
|
- Next.js 16
|
|
- React 19 与 TypeScript
|
|
- pnpm
|
|
- EdgeOne 静态部署
|
|
|
|
## 本地运行
|
|
|
|
使用 Node.js 24.22.1 与 pnpm 11.25.0(与 `.nvmrc` 和 `package.json` 一致)。
|
|
|
|
```bash
|
|
corepack pnpm install --frozen-lockfile
|
|
corepack pnpm dev
|
|
```
|
|
|
|
## 常用命令
|
|
|
|
```bash
|
|
corepack pnpm lint # 检查代码
|
|
corepack pnpm build # 构建静态站点到 out/
|
|
corepack pnpm test # 内容回退和 URL/SEO 单元测试
|
|
corepack pnpm test:export # 检查 out/ 的静态资源引用
|
|
corepack pnpm test:e2e # 在 out/ 上运行浏览器回归测试
|
|
corepack pnpm check # lint、单元测试、构建、产物与浏览器检查
|
|
corepack pnpm cache-images # 缓存新闻中的远程图片
|
|
corepack pnpm deploy # 使用 Wrangler 部署
|
|
```
|
|
|
|
## 目录概览
|
|
|
|
```text
|
|
src/app/ 页面和路由
|
|
src/components/ 页面组件与站点布局
|
|
src/data/news/ 新闻 Markdown 内容
|
|
src/data/policy/ 政策与声明内容
|
|
src/data/links.json 友情链接数据
|
|
src/locales/ UI 文案翻译
|
|
public/ 图片、图标与其他静态资源
|
|
```
|
|
|
|
公开语言路径为 `/zh-Hans/`、`/zh-Hant/`、`/en/` 和 `/jp/`。例如:`/zh-Hans/news/`、`/en/links/`。
|
|
|
|
## 静态导出与回归测试
|
|
|
|
首次运行浏览器测试前执行 `corepack pnpm exec playwright install chromium`。测试使用本机 `127.0.0.1:4173` 服务已构建的 `out/`,覆盖 SPA 导航、语言切换、主题持久化、移动菜单、SEO 与 404。CI 使用 `.nvmrc` 固定的 Node.js 版本执行 `corepack pnpm check`。
|
|
|
|
新闻列表仅传递摘要,详情按 slug 回退到中文;首页只读取当前语言的三条新闻。政策正文在构建时渲染,不向客户端传递四种语言的全文。
|
|
|
|
SEO 默认主域名为 `https://www.kivotos.cc`,可在构建时通过 `NEXT_PUBLIC_SITE_URL` 设置主域名(不带路径)。所有页面的 canonical、hreflang、Open Graph 和 sitemap 共用此配置。`jp` 是公开路由,HTML 的 `lang` 和 hreflang 使用 `ja`。
|
|
|
|
`pnpm build` 在 Next.js 静态导出后执行 `scripts/finalize-export.mts`,按路径设置 HTML 初始语言,并在 head 尾部加入同步主题初始化脚本,使保存的主题在正文首次绘制前生效。这不在 React 树中插入脚本,也不改变 SPA 路由。请使用完整构建命令;`next dev` 不执行导出后处理,首屏主题验证以构建产物为准。
|
|
|
|
资源检查明确记录现有 8 张缺失新闻缓存图,以及 20240917 新闻的相对封面路径(四种语言均存在),输出诊断信息;这些图片修复不在本轮范围内,任何新增缺失资源都会使检查失败。修复图片后应移除 `tests/export/assets.test.ts` 中的对应记录。
|