发布到线上 wiki.zhiheng.io 站点。
我自制了一个发布脚本 tw_bundler.py
用来发布。这个文件放在个人网盘的 Journey/Toolbox/TiddlyWiki
中,没有公开,它的运行过程会显示出它做了什么。
总体思路是:生成一个新的 TiddlyWiki Node.js 站点文件夹,构建成单页 HTML,再发布到 GitHub Pages。
其中需要处理下面描述的问题。
私密性
我的 wiki 中即有可公开的信息,又有私密的内容。我的做法是将不公开的 tiddler 加上
tag。带 的 tiddler 及其自己的子 tiddler 都不会被发布出去。发布脚本会遍历所有 tiddler,不复制
的 tiddler 及其子 tiddler,并且不复制这些 tiddler 中使用的图片。减少生成的单页 HTML 大小
为了减少生成的单页 HTML 的大小,使得加载变快,做了这些优化:
- 在本地 wiki 中将图片内嵌进 wiki,对外发布的 wiki 使用外部图片,托管在 COS 加速加载。详情描述在 TiddlyWiki: Import Media Contents to TiddlyWiki
- 去掉不必要的插件,目前主要是 Code Mirror
这样后再使用 tiddlywiki --build
生成单页 HTML。Build target 在 tiddlywiki.info 中定义的。
生成的单页 HTML 在 6MB 左右,gzip 之后在 2M 左右。GitHub pages 会做 gzip。这样优化后使用 TW 的 lazy loading 意义不大,也使得不需要有 server,直接静态文件部署即可。
同步至 COS
这里的工具带有我的 COS 参数,因此没有公开。
我写了两个同步工具:
sync_to_cos.sh
脚本,使用coscmd
来同步整个目录- filesaver,可以将一个文件的文件名 slugify 并上传 COS
发布到 GitHub Pages
手动发布至 wiki 仓库。