接手陌生项目时,先提出一个具体问题:“页面里的副标题从哪里来?”这个问题比“解释所有文件”更容易导向可靠的修改位置。下面用一个可以自行建立的教学项目演示;读者可以先只阅读文件,不执行构建。
一组能追踪的文件
在新的 site-map-demo 目录中,按下列路径保存四个文件。Node.js 20 或更新版本即可运行,没有第三方依赖。
package.json:
{
"name": "site-map-demo",
"private": true,
"type": "module",
"scripts": { "build": "node scripts/build.mjs" }
}
content/home.json:
{"title":"小型知识站","subtitle":"先完成一个可以检查的小任务"}
templates/home.html:
<!doctype html>
<html lang="zh-CN">
<head><meta charset="utf-8"><title>{{title}}</title></head>
<body><h1>{{title}}</h1><p>{{subtitle}}</p></body>
</html>
scripts/build.mjs:
import fs from 'node:fs';
const data = JSON.parse(fs.readFileSync('content/home.json', 'utf8'));
const template = fs.readFileSync('templates/home.html', 'utf8');
const escape = value => String(value).replace(/[&<>"']/g, char =>
({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[char]));
const html = template.replace(/{{(title|subtitle)}}/g, (_, key) => escape(data[key]));
fs.mkdirSync('public', { recursive: true });
fs.writeFileSync('public/index.html', html);
生成后的 public/index.html 是输出,初次建立目录时可以还不存在。该脚本要求从项目根目录运行,因为读取路径以当前工作目录为基准。
第一轮只读,找出证据
在 PowerShell 中运行:
Get-Content -LiteralPath package.json
rg --files content templates scripts
rg -n --fixed-strings "subtitle" content templates scripts
rg -n "readFileSync|writeFileSync" scripts
没有 rg 时,用编辑器搜索相同字段即可。不要为了画结构图先运行一个不熟悉的安装或构建脚本;这些命令可能执行任意脚本和写文件。先读懂它们的内容。
给 Codex 的任务可以是:
只读这个项目,回答首页副标题应改哪里。
沿 package.json 的 build 入口追踪内容、模板和输出;每条关系注明文件与行号。
区分已读源码能够证明的事实与还没执行的检查。
本轮不修改文件,不安装依赖,不运行构建。
本例应得到怎样的地图
| 角色 | 路径与证据 | 结论 |
|---|---|---|
| 入口 | package.json 的 build | npm run build 会执行 scripts/build.mjs |
| 内容 | build.mjs 读取 content/home.json | 副标题来自 JSON 的 subtitle 字段 |
| 模板 | build.mjs 读取 templates/home.html | title 与 subtitle 占位符决定插入位置 |
| 输出 | build.mjs 写 public/index.html | 直接编辑输出会在下次构建时丢失 |
| 环境 | 脚本使用相对路径 | 命令应从项目根运行 |
对应的关系是 package.json → scripts/build.mjs → 读取 JSON 与模板 → 写 public/index.html。这个关系来自源码,不需要先执行脚本才知道。
如果真实项目有多个 build 命令,继续检查调用链;若同一个输出被多个脚本写入,也应记在地图中。搜索到含相同文案的文件,只能说明它是候选,不能证明它就是最终来源。
第二轮才验证修改路径
允许修改后,只调整 content/home.json 的 subtitle,再运行:
npm run build
rg -n --fixed-strings "可以检查" public/index.html
预期输出文件中的 p 内容与 JSON 一致,HTML 特殊字符会被转义。此时再打开页面检查显示。上述结果是教学预期;在自己的环境中,需保存实际命令输出后才能写“已验证”。
在真实仓库里,还应核对现有测试和部署入口是否读取 public/。本例没有部署、导航、路由与增量构建,不能据此假定任何真实站点都有相同结构。地图的完成标准是它能解释本次需求的正确修改点,不是把目录清单写得很长。
资料来源
- Node.js 文件系统
示例使用 Node 内置读写文件 API。
下一步
继续阅读与你当前问题相关的教程:


