873 字
4 分钟
页面浏览--访问次数--
Markdown 文件片段导入

片段导入是构建期的纯文本展开:指令所在位置会被目标文件的内容替换,替换后的内容继续走同一套 Markdown 处理链,因此代码高亮、目录锚点、行号都照常生效,运行时零开销。

本文用内容仓里的 content/snippets/npm-commands.md 做目标文件,它的内容是:

<!-- #region prerequisites -->
这篇文章里的示例假定本地已经准备好:
- Node.js **22.12** 或更高版本
- pnpm 包管理器
<!-- #endregion -->
## 常用命令
```bash
pnpm content:sync # 把内容仓同步到主题仓
pnpm dev # 本地预览
pnpm build # 生产构建
```

导入整份文件#

效果

这篇文章里的示例假定本地已经准备好:

  • Node.js 22.12 或更高版本
  • pnpm 包管理器

常用命令#

Terminal window
pnpm content:sync # 把内容仓同步到主题仓
pnpm dev # 本地预览
pnpm build # 生产构建

以上三条命令覆盖了 90% 的日常操作。

源码

src/content/snippets/npm-commands.md

导入指定行区间#

效果(只取第 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-config
export 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 处理链,因此被导入的代码块同样带高亮与行号。

第 18 篇,共 23 篇本文属于系列

Markdown 文件片段导入
https://www.klucen.cn/posts/syntax/markdown-include/
作者
KLucen
发布于
2025-12-14
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

评论

正在加载评论...

最后更新于 ,距今已过 301 天

部分内容可能已过时