文件
phonerail/site/scripts/sync-docs.mjs
T
zhou yang和Claude Opus 5 2bfe308b30 初始导入:PhoneRail 五路手机直供电源板
原理图/PCB 已在 EasyEDA 里做到 12 页跨页 0 漏接,固件刚完成骨架包 A1。
这次是把已有的一切一次性纳入版本控制,没有改动任何设计内容。

纳入:
- 设计与需求文档、PROGRESS.md、小米8 参考原理图 PDF 与追脚脚本
- .claude/ 下的 EasyEDA 桥接工具链与几何/网表缓存(eda-parts.json、
  pcb-parts.json、pcb-pads.json、p2-ch1.json 等,是重画各页的唯一事实来源)
- 117 张验证截图(本项目所有方向问题都是靠人眼看截图发现的,属于证据不是垃圾)
- firmware/ 的 A1 骨架与 site/ 文档站源码

.gitignore 排除:构建产物(firmware/build、host/build、sdkconfig)、
site/node_modules、__pycache__、桥接日志 _bridge.log、脚本自标的 *.stale。

.gitattributes 默认 `* -text`:现有 .py/.json 大多是 CRLF,原样存,
不让 git 重写行尾。唯一例外是 *.sh 强制 LF —— 带 \r 的 shell 脚本 bash 跑不了。

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QYuExfgyYa6DzRRcUso8M8
2026-09-06 18:18:14 +08:00

42 行
1.5 KiB
JavaScript

// 把项目根的 markdown 同步进 site/docs/,由 npm 的 predev / prebuild 自动跑。
//
// 为什么要拷而不是让 VitePress 直接指向项目根:
// srcDir 指到 D:\DCDC 之后,那里的 .md 编译出的虚拟模块要 import 'vue/server-renderer',
// 而 node_modules 在 site/ 下(是子目录不是父目录),Rollup 解析不到,构建直接失败。
// 拷进来是最省事且不污染硬件工程根目录的做法。
//
// ⚠️ site/docs/ 下的文件是**生成物**,别在里面改内容 —— 改 D:\DCDC\需求文档.md。
import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
const here = path.dirname(fileURLToPath(import.meta.url))
const ROOT = path.resolve(here, '../..')
const OUT = path.resolve(here, '../docs')
/** [源文件, 站点内路径] */
const PAGES = [
['需求文档.md', 'index.md'],
['固件开发计划.md', 'plan.md']
]
fs.mkdirSync(OUT, { recursive: true })
for (const [src, dst] of PAGES) {
const from = path.join(ROOT, src)
const to = path.join(OUT, dst)
if (!fs.existsSync(from)) {
console.error(`[sync-docs] 找不到源文件:${from}`)
process.exit(1)
}
const body = fs.readFileSync(from, 'utf8')
const prev = fs.existsSync(to) ? fs.readFileSync(to, 'utf8') : null
if (prev === body) {
console.log(`[sync-docs] 未变化 ${src}`)
continue
}
fs.writeFileSync(to, body)
console.log(`[sync-docs] 已同步 ${src} -> docs/${dst} (${body.length} 字符)`)
}