通用概念

关于不同类型的文件、插件和扩展。

Lume 的工作方式很简单:它只是读取你的 src 目录中的文件, 处理内容并将最终文件保存到 dest 文件夹中。

这里有不同类型的文件:

页面文件 (Page files)

页面文件 (Page file) 是指被加载、处理并保存到 dest 文件夹的文件,用于生成一个或多个页面。在 Lume 中,页面 (pages) 分为两种不同的类型:

常规页面 (Regular pages)

是指旨在生成 HTML 页面的文件。以 my-page.md 为例:

  1. 加载文件内容。
  2. 将输出文件从 /my-page.md 更改为 /my-page/index.html
  3. 运行预处理器 (preprocessors)
  4. 渲染页面内容和布局 (layouts)
  5. 运行处理器 (processors)
  6. 将输出文件保存为 /my-page/index.html

默认情况下,Lume 将以下格式解释为常规页面文件 (regular page files),因此它们会被加载、处理并导出到 dest 文件夹:.md.markdown.vto.page.json.page.js.page.ts.yaml。使用 site.loadPages() 添加额外的扩展名:

// 加载扩展名为 .foo 的页面
// 示例: /my-page.foo => /my-page/index.html
site.loadPages([".foo"]);

Note

如果你正在使用任何插件 (plugin) 来为新的模板引擎提供支持,例如 pugeta,你不需要 运行 site.loadPages(),因为插件 (plugin) 会为你执行此操作。

资源页面 (Asset pages)

是指旨在输出资源 (assets) 的页面,例如 .css 文件、.js 或图像。它们 与常规页面 (regular pages) 非常相似,但有一些区别。以 my-styles.css 为例:

  1. 加载文件内容。
  2. 运行预处理器 (preprocessors)
  3. 运行处理器 (processors)
  4. 将输出文件保存为 /my-styles.css

默认情况下,Lume 不会加载任何资源 (asset)。使用函数 site.loadAssets() 来 配置 Lume 以加载某些扩展名作为页面资源 (page assets)。例如:

// 加载 .css 文件
site.loadAssets([".css"]);

对于需要特殊处理的资源 (assets),例如二进制文件(例如 .webp), 你需要在调用 site.loadAssets() 时指定加载器 (loader)。如果未指定加载器 (loader), Lume 默认使用文本加载器 (text loader)。

// 加载二进制文件
site.loadAssets([".webp"], binaryLoader);

Note

如果你正在使用任何插件 (plugin) 来处理资源 (assets),例如 postcssesbuildsvgo,则不需要运行 site.loadAssets(),因为 插件 (plugin) 会为你执行此操作。

数据文件 (Data files)

数据文件 (Data files) 是指保存为 _data.* 或在 _data/ 目录中的文件, 包含共享给页面文件 (page files) 的数据。以下文件被解释为 数据文件 (data files):_data.yaml_data.ts_data.js_data.json。如果你想 加载其他数据格式,请使用 site.loadData() 函数:

// 加载 .toml 文件
site.loadData([".toml"], tomlLoader);

静态文件 (Static files)

它们是被导出到 dest 文件夹的文件,但不需要被处理,因此 Lume 不会加载 内容,只是复制它们。它们使用 site.copy() 函数按原样复制。 查看更多关于复制的信息

// 复制 "/static/" 目录中的所有文件
site.copy("static");

// 复制 .pdf 文件
site.copy([".pdf"]);

包含文件 (Includes)

包含文件 (Includes) 是指被页面 (pages) 加载的文件,例如,布局 (layouts) 或模板 (templates)。默认情况下,它们放置在 _includes 文件夹中,但你可以在 配置文件 中配置它。

组件 (Components)

默认情况下保存在 _components 文件夹中,并存储可在模板 (templates) 中使用的可重用代码片段。

插件 (Plugins)

Lume 中的一切都是插件 (plugin)。即使是对核心格式(如 .md.yaml.json 等)的支持也是由一些 默认启用的 插件 提供的。