# Markdown To Web 此仓库将一组本地 Markdown 笔记(位于 `public/mengyanote`)转换成一个静态的 React 网站,便于浏览、检索和发布到网络上。 本 README 为中文说明,包含项目简介、运行/构建步骤、目录结构、如何编辑笔记以及部署和贡献指南,方便直接发布到 GitHub。 ## 主要特性 - 从本地目录(`public/mengyanote`)递归读取 Markdown 文件并生成静态数据(`src/data`)。 - 使用 `react-markdown` 渲染 Markdown,支持数学公式(remark/rehype 插件)与代码高亮。 - 目录树侧边栏、内容渲染器等基础浏览功能。 - 通过简单脚本将 Markdown 文件转为项目需要的 JSON 数据,便于在静态站点中直接使用。 ## 技术栈 - React 19 - Vite - react-markdown + remark/rehype 插件(remark-gfm、remark-math、rehype-katex、rehype-highlight 等) ## 快速开始(Windows / cmd.exe) 1. 安装依赖 ``` npm install ``` 2. 本地开发(会先生成静态数据) ``` npm run dev ``` 这会先执行 `node scripts/generateData.js` 从 `public/mengyanote` 读取 Markdown 并生成 `src/data` 下的 `directoryTree.json` / `fileContents.json` / `stats.json`,然后启动 Vite 开发服务器。 3. 生成生产构建 ``` npm run build ``` 4. 预览构建产物 ``` npm run preview ``` 5. 单独生成数据(不启动服务器) ``` npm run generate-data ``` 6. 代码检查 ``` npm run lint ``` ## 项目结构(重要文件/目录) - `public/mengyanote/` - 源 Markdown 笔记目录(请把你的 .md 文件放在这里以纳入站点)。 - `scripts/generateData.js` - 将 Markdown 文件读取并生成 `src/data` 的脚本。 - `src/data/` - 由脚本生成的 JSON 数据(目录树、文件内容、统计信息)。 - `src/components/MarkdownRenderer.jsx` - Markdown 渲染组件(样式与功能定制点)。 - `src/components/MarkdownRenderer.css` - Markdown 渲染相关样式(可在此处简化或替换为你喜欢的样式)。 - `src/components/Sidebar.jsx` - 侧边栏目录树组件。 - `src/context/AppContext.jsx` - 全局上下文与路由状态。 - `scripts/` - 工具脚本(目前包含 `generateData.js`)。 示例:如果你想让 Markdown 渲染更简洁(“换成我图片那种”样式),可以编辑 `src/components/MarkdownRenderer.css` 或直接修改 `MarkdownRenderer.jsx` 中的渲染类名/元素结构。 ## 如何编辑/添加笔记 1. 在 `public/mengyanote` 下增加或修改 `.md` 文件,保持目录组织即可。 2. 运行 `npm run generate-data`(或 `npm run dev`)以重新生成 `src/data`。 3. 刷新浏览器查看最新内容。 注意:脚本会忽略以 `.` 开头的文件/目录(例如 `.obsidian`)和一些预设项(`node_modules`、`.git` 等)。 ## 部署建议 - 静态站点:`npm run build` 会在 `dist/` 生成静态文件,适合部署到 GitHub Pages、Netlify、Vercel、或任意静态文件托管服务。 - GitHub Pages:构建后将 `dist/` 的内容发布到 gh-pages 分支或通过 GitHub Actions 自动发布。 示例(手工): 1. 构建 ``` npm run build ``` 2. 将 `dist/` 内容上传到你的静态托管服务或 gh-pages 分支。 如果需要,我可以为你添加一个自动部署到 GitHub Pages 的 GitHub Actions 工作流。 ## 定制渲染样式 如果你觉得当前 Markdown 美化太重并想改回更简洁的“图片优先”或原始样式: - 编辑 `src/components/MarkdownRenderer.css`:移除或覆盖过度的样式(字体、背景、代码块高亮等)。 - 编辑 `src/components/MarkdownRenderer.jsx`:调整渲染器的 className、元素包装或忽略某些 remark/rehype 插件。 常见修改点: - 移除 KaTeX 或代码高亮:在 `src/components/MarkdownRenderer.jsx` 中删除相应的 rehype 插件 import 与使用。 - 简化图片样式:在 CSS 中将 img 的 max-width、margin 等属性调整为你想要的样式。 ## 贡献与许可 欢迎提交 Issue 或 Pull Request。仓库包含 `LICENSE`(请查看该文件以确认许可证类型)。 为了保持项目干净: - 新功能请先创建 issue 讨论。 - 提交 PR 时附带简短说明和相关截图(如果是 UI 变更)。 ## 联系方式 如需帮助或定制:在 Issue 中描述你想要的样式和示例图片/链接,我可以帮你修改 `MarkdownRenderer.css` / `MarkdownRenderer.jsx` 实现视觉风格。 --- 祝发布顺利!如果你想,我可以: - 帮你把 README 翻译成英文版本并放在 `README.en.md`; - 或直接替你修改 Markdown 渲染样式(把渲染改成更像你“图片那种”的风格)。