操作顺序

Lume 如何构建你的站点?

以下是 Lume 构建站点的概括性描述。 当你运行 lume 时,将按以下顺序执行操作:

  1. 触发 event beforeBuild 事件。
  2. 确保 dest 文件夹为空 (除非 emptyDest 被禁用)。
  3. 递归遍历 src 文件夹,并使用所有文件和文件夹构建一个树。 远程加载的 文件也会被添加进来。
  4. 触发 event afterLoad 事件。
  5. 递归遍历树,并加载所有匹配有效文件扩展名的文件,例如 .md.vto 等。
    • 跳过以 _. 开头或被 site.ignore() 忽略的文件和文件夹。
    • 如果文件 必须静态复制, 计算源路径和目标路径。
    • 如果文件名是 _data 或位于 _data 文件夹内,则它是共享数据。
    • 如果文件位于 _components 文件夹内,则它是一个组件。
    • 如果它具有已知扩展名,则它是一个页面。
    • 否则,忽略它(或者如果 copyRemainingFiles 启用,则复制它)。
  6. 触发 event beforeRender 事件。
  7. 将所有页面按 renderOrder 分组并排序。
  8. 对于每个具有相同 renderOrder 的页面组:
  9. 触发 event afterRender 事件。
  10. 运行已注册的 处理器
  11. 触发 event beforeSave 事件。
  12. 将所有页面保存到 dest 文件夹。
  13. 触发 event afterBuild 事件。

监听模式

在监听模式下(使用 lume --servelume --watch),首次构建是完全相同的,但后续的更改有一些不同之处:

  • dest 文件夹不会被清空。
  • 仅重新加载已更改的文件。
  • 步骤 4 到 10 完全相同。 所有页面(不仅仅是修改过的页面)都会被 重新渲染。 这是因为一个文件的更改可能会影响许多页面,因此我们 必须再次渲染所有页面。 请参阅 作用域更新 以了解如何配置此项。
  • 只有内容发生更改的页面才会保存在 dest 中。