支持中英文的个人主页:简历、书签、实用工具与小游戏。无第三方 npm 依赖。
需要 Node.js 22+;本地预览还需 Python 3。
npm run build # 生成 dist/,覆盖旧输出
npm run preview # 构建并预览:http://localhost:8080Vercel 直接导入仓库并设置环境变量。.env.local 不上传,线上需单独配置。
本地配置写入 .env.local,值为 JSON:
PAGES_JSON='{"home":true,"resume":true,"bookmarks":true,"apps":true,"language":true,"footer":true,"showDomain":true,"showLastUpdated":true,"showVisitorCount":true}'
PROFILE_JSON='{"name":"Alex Chen","nickname":"Alex","email":"[email protected]","domain":"example.com"}'
INTERNSHIPS_JSON='[{"title":"正在寻找机会..."}]'优先级:系统环境变量 → .env.local → 默认配置。JSON 含英文单引号时,可用反引号包裹整个值。启用部分的无效 JSON 会终止构建。
PAGES_JSON 的字段默认启用,设为 false 关闭;全部页面关闭时保留首页。language: false 关闭英文版,默认中文路径为 /、英文为 /en/。
footer 控制整个页脚;showDomain、showLastUpdated、showVisitorCount 分别控制页脚域名、更新时间、访问统计,中英文共用。关闭页脚或访问统计时,不加载统计脚本。旧的 PROFILE_JSON.footer 显示开关需移到 PAGES_JSON;Vercel 环境变量也需同步调整。
| 变量 | 内容与字段 |
|---|---|
PAGES_JSON |
页面:home、resume、bookmarks、apps;显示开关:language、footer、showDomain、showLastUpdated、showVisitorCount |
PROFILE_JSON |
个人信息、首页链接、页脚;完整示例见默认配置 |
ANNOUNCEMENTS_JSON |
公告数组:content,可选 icon、link: {label, url}、expiresAt: YYYY-MM-DD |
EDUCATION_JSON、INTERNSHIPS_JSON、STUDENT_WORK_JSON、AWARDS_JSON |
教育、实习、学生工作、奖项数组:title、subtitle、date、description、descriptionUrl |
PAPERS_JSON、PROJECTS_JSON |
论文、项目数组:title、author、description、tag(数组)、result、url |
BOOKMARKS_JSON |
书签分组数组:name、links;链接包含 url、label,可选 description、tags |
英文配置在 _JSON 前加 _EN(如 INTERNSHIPS_EN_JSON、BOOKMARKS_EN_JSON)。未设置时继承中文;个人信息按字段覆盖,数组整体替换。简历区块设为 [] 即隐藏。
name 用于简历,nickname 用于首页;首页链接图标支持 blog、github、scholar、email。PROFILE_JSON.footer 只放页脚内容:startYear、text。工具数据保存在当前浏览器。
src/config/:默认内容与工具入口;src/build/:构建与中英文文案。src/templates/、src/css/、src/js/:页面模板、样式、交互。- 根目录
avatar.png、BingSiteAuth.xml在存在时复制到构建输出。 resume.pdf、resume-en.pdf在启用对应简历页面时复制并显示下载入口。
MIT。2048 核心逻辑改编自 Gabriele Cirulli 的 2048,保留其 MIT 声明。