操作顺序
Lume 如何构建你的站点?
以下是 Lume 构建站点的概括性描述。 当你运行 lume
时,将按以下顺序执行操作:
- 触发 event
beforeBuild
事件。 - 确保
dest
文件夹为空 (除非emptyDest
被禁用)。 - 递归遍历
src
文件夹,并使用所有文件和文件夹构建一个树。 远程加载的 文件也会被添加进来。 - 触发 event
afterLoad
事件。 - 递归遍历树,并加载所有匹配有效文件扩展名的文件,例如
.md
、.vto
等。- 跳过以
_
、.
开头或被site.ignore()
忽略的文件和文件夹。 - 如果文件 必须静态复制, 计算源路径和目标路径。
- 如果文件名是
_data
或位于_data
文件夹内,则它是共享数据。 - 如果文件位于
_components
文件夹内,则它是一个组件。 - 如果它具有已知扩展名,则它是一个页面。
- 否则,忽略它(或者如果
copyRemainingFiles
启用,则复制它)。
- 跳过以
- 触发 event
beforeRender
事件。 - 将所有页面按
renderOrder
值 分组并排序。 - 对于每个具有相同
renderOrder
的页面组: - 触发 event
afterRender
事件。 - 运行已注册的 处理器。
- 触发 event
beforeSave
事件。 - 将所有页面保存到
dest
文件夹。 - 触发 event
afterBuild
事件。
监听模式
在监听模式下(使用 lume --serve
或 lume --watch
),首次构建是完全相同的,但后续的更改有一些不同之处:
dest
文件夹不会被清空。- 仅重新加载已更改的文件。
- 步骤 4 到 10 完全相同。 所有页面(不仅仅是修改过的页面)都会被 重新渲染。 这是因为一个文件的更改可能会影响许多页面,因此我们 必须再次渲染所有页面。 请参阅 作用域更新 以了解如何配置此项。
- 只有内容发生更改的页面才会保存在
dest
中。