这是一个基于 Next.js 16 和 Tailwind CSS 构建的静态周刊归档网站。该项目旨在为《科技爱好者周刊》提供一个现代、优雅且易于阅读的 Web 界面。
- 静态生成 (SSG): 极速加载,SEO 友好,可部署至任何静态托管服务(GitHub Pages, Vercel, Cloudflare Pages)。
- 自动化数据处理: 通过脚本自动解析 Markdown 原始内容,生成结构化 JSON 数据。
- 现代化 UI 设计:
- 响应式大卡片布局,适配移动端与桌面端。
- 深色模式支持: 完美适配系统主题,支持手动一键切换(白天/黑夜)。
- 精美的侧边栏导航,支持分类筛选与计数。
- 内容优化:
- 自动提取封面图与摘要。
- 智能过滤冗余的样板文字(如招聘信息、投稿指南等),专注于内容本身。
- 支持 Markdown 渲染,保留原文格式。
- 框架: Next.js 16 (App Router)
- 样式: Tailwind CSS v4
- 图标: Lucide React
- Markdown 处理: remark, remark-html, remark-gfm
- 工具库:
next-themes(主题切换)pinyin-pro(中文转拼音 slug)date-fns(日期处理)
npm install项目依赖外部的 Markdown 内容源。默认配置下,脚本会从 ../weekly-master/docs 读取文件。
# 解析 Markdown 并生成 JSON 数据到 src/data
node scripts/build-data.mjs注意: 首次运行前,请确保你已经克隆了内容仓库,或者修改
scripts/build-data.mjs中的CONTENT_DIR路径。
npm run dev访问 http://localhost:3000 查看效果。
本项目预配置为静态导出 (output: 'export'),生成的静态文件位于 out 目录。
- 将代码推送到 GitHub(确保包含生成的
src/data目录,因为 Vercel 环境下无法访问外部 Markdown 源)。 - 在 Vercel 面板导入项目。
- Vercel 会自动识别 Next.js 项目,使用默认配置即可:
- Build Command:
npm run build - Output Directory:
out
- Build Command:
- 点击 Deploy。
- 将代码推送到 GitHub。
- 在 Cloudflare Dashboard > Pages > Connect to Git。
- 选择仓库并配置构建设置:
- Framework Preset: Next.js (Static HTML Export)
- Build Command:
npm run build - Build Output Directory:
out
- 保存并部署。
# 构建并部署到 gh-pages 分支
npm run deployweekly-web/
├── scripts/
│ └── build-data.mjs # 数据生成脚本:解析 Markdown -> JSON
├── src/
│ ├── app/ # Next.js App Router 页面
│ ├── components/ # UI 组件 (Sidebar, Markdown, ThemeToggle 等)
│ ├── data/ # 生成的静态 JSON 数据 (issues, categories)
│ └── lib/ # 工具函数
├── public/ # 静态资源
└── next.config.ts # Next.js 配置
- 数据源路径: 修改
scripts/build-data.mjs中的CONTENT_DIR常量。 - 分类映射: 修改
scripts/build-data.mjs中的逻辑以调整分类提取规则。
MIT