通用概念
关于不同类型的文件、插件和扩展。
Lume 的工作方式很简单:它只是读取你的 src
目录中的文件, 处理内容并将最终文件保存到 dest
文件夹中。
这里有不同类型的文件:
页面文件 (Page files)
页面文件 (Page file) 是指被加载、处理并保存到 dest
文件夹的文件,用于生成一个或多个页面。在 Lume 中,页面 (pages) 分为两种不同的类型:
常规页面 (Regular pages)
是指旨在生成 HTML 页面的文件。以 my-page.md
为例:
- 加载文件内容。
- 将输出文件从
/my-page.md
更改为/my-page/index.html
。 - 运行预处理器 (preprocessors)
- 渲染页面内容和布局 (layouts)
- 运行处理器 (processors)
- 将输出文件保存为
/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"]);
资源页面 (Asset pages)
是指旨在输出资源 (assets) 的页面,例如 .css
文件、.js
或图像。它们 与常规页面 (regular pages) 非常相似,但有一些区别。以 my-styles.css
为例:
- 加载文件内容。
- 运行预处理器 (preprocessors)
- 运行处理器 (processors)
- 将输出文件保存为
/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),例如 postcss、esbuild 或 svgo,则不需要运行 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
等)的支持也是由一些 默认启用的 插件 提供的。