为了最大化发挥增量构建的性能,如果只是删除一篇文章,在重建的时候不会更新相应分类和标签的文章列表页,但只要重新保存了(哪怕没有任何修改)任意一篇文章,就可以触发该文章所在的分类和标签的文章列表页重建。
理由:由于构建列表页是个比较耗时的过程,而删除文章只是个偶尔发生的情形,所以我跳过了这种情形,使其不触发列表页的构建。我自己测试的“删除也重建:只有修改才重建”的耗时对比大概是 3:1。
生成网站
增量构建,多站点时会构建全部站点。
bx gen
全量构建
只重新生成全部 .md
文件,未编辑过的附件依然会被跳过,这条命令主要用在修改模板文件或菜单后重建全部页面。
bx gen --force
指定站点
只构建 [sites.1]
这个站点(--site
可以简写为 -s
)。
bx gen --site=1
bx gen -s=1
热重建
0.7.0 开始支持
当文章发生变化时,自动重建站点。
bx gen --site=1 --hot-gen
bx gen -s=1 --hot-gen
site.source
指 _config.toml 中相应站点的 source
。meta.target
指 archive 中 BeexMeta 设置的 target
。这里有一张新版本的简易流程图:重写 Beex
以下是老版本的:
site.source
目录开始。.md
文件,则尝试读取 meta.target
。
meta.target
,则本目录中所有的文件都以 meta.target
的目录为目标目录。
meta.target
影响,有两个原因:
meta.target
,源文件的移动就不应该影响 generating 的目标位置。.md
文件,并设置相应的 meta.target
,此方法可递归使用。meta.target
,全部文件以 site.target
为目标根目录,并且以自身相对于 site.source
的路径复制到目标位置。
srouce/123.jpg
会被复制到 target/123.jpg
,而 source/456/789.jpg
会被复制到 target/456/789.jpg
。.md
文件,则每个 .md
会被复制到自己指定的 meta.target
(如果有的话),其他文件的目标根位置都是 site.target
。
.md
的相对位置。meta.target
以 index.html
或 index.htm
为文件名,则生成的 url 会自动删除文件名,以目录的形式作为连接。
foo/bar/index.html
会变为 /foo/bar/
。index.html
文件名,如果不支持你可以搜 .htaccess
隐藏 index.html
的教程或者给主机商发工单。meta.target
占用了上面的某个目录,则跳过相应的页面,也就是你也可以手工维护某个特定的列表页和首页。如果 _config.toml
里设置了 image_quality
(1 至 100),则压缩 jpg 图片,目前图片库处理大图片的速度有点慢,好在 bx gen
默认不是全量构建,等待优化即可。
相关参考: