873 字
4 分钟
Markdown 文件片段导入
片段导入是构建期的纯文本展开:指令所在位置会被目标文件的内容替换,替换后的内容继续走同一套 Markdown 处理链,因此代码高亮、目录锚点、行号都照常生效,运行时零开销。
本文用内容仓里的 content/snippets/npm-commands.md 做目标文件,它的内容是:
<!-- #region prerequisites -->这篇文章里的示例假定本地已经准备好:
- Node.js **22.12** 或更高版本- pnpm 包管理器<!-- #endregion -->
## 常用命令
```bashpnpm content:sync # 把内容仓同步到主题仓pnpm dev # 本地预览pnpm build # 生产构建```导入整份文件
效果
这篇文章里的示例假定本地已经准备好:
- Node.js 22.12 或更高版本
- pnpm 包管理器
常用命令
pnpm content:sync # 把内容仓同步到主题仓pnpm dev # 本地预览pnpm build # 生产构建以上三条命令覆盖了 90% 的日常操作。
源码
导入指定行区间
效果(只取第 2–5 行)
这篇文章里的示例假定本地已经准备好:
- Node.js 22.12 或更高版本
- pnpm 包管理器
源码
<!-- @include: src/content/snippets/npm-commands.md{2-5} -->行区间的写法:{起始-结束};也支持只写一头,如 {3-}(第 3 行到结尾)、{-5}(开头到第 5 行)。
导入命名区块(region)
效果(只取 #region prerequisites 标记的那一段)
这篇文章里的示例假定本地已经准备好:
- Node.js 22.12 或更高版本
- pnpm 包管理器
源码——先在目标文件里用注释标记出区块:
// #region auth-configexport const authConfig = { enabled: true, provider: 'github',};// #endregion再在正文里引用这个区块名:
<!-- @include: src/content/snippets/npm-commands.md#prerequisites -->路径怎么写
官方文档给的是「相对当前 Markdown 文件的相对路径」。在本站这套主题与构建流程下实测的结果是:路径相对构建时的工作目录(也就是站点仓根目录)解析。
| 写法 | 本仓实测 |
|---|---|
src/content/snippets/xxx.md(站点仓根目录起算) | 生效 |
../../snippets/xxx.md(相对当前文章文件) | 不生效,指令原样保留为注释、页面上看不到任何东西 |
/src/content/snippets/xxx.md(以 / 开头) | 不生效 |
也就是说:写成本站仓根目录起算的路径最稳。构建时内容仓会被物化到站点仓的 src/content/ 下,所以 src/content/snippets/... 这个写法在本地预览与线上构建里都成立。
边界行为
- 只处理独立成行、且位于代码围栏之外的注释指令;
- 目标文件缺失、越界、未闭合或递归包含时,指令会原样保留(不报错、页面上不显示);
- 文件读取被限制在仓库根目录内,相对路径也不能越出仓库;
- 展开结果会继续经过同一套 Markdown 处理链,因此被导入的代码块同样带高亮与行号。
Markdown 文件片段导入
https://www.klucen.cn/posts/博客搭建/markdown-include/分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 301 天
部分内容可能已过时
评论