是时候从Buster转到Monster了
我最先开始用Ghost写博客时,用来生成静态页面(并发布到aimingoo.github.io)的工具是Buster。首先它确实不太好用,其次用它生成(generate)出来的页面还需要做许多的后续处理才能使用。由于这个缘故,我写了Monster这个工具的第一代产品并放在了我的ghost-utils仓库中,名为makesite.sh
。
makesite.sh
其实是类似Buster的。由于采用了相同的实现方案,所以也就有着Buster的最根本的问题:每次都要对全站做重新生成。为此,我另外又写了一个脚本,名为updatesite.sh
,用来实现增量生成基于Ghost的静态网站。
再之后,将这两个脚本合在一起,就变成了:
Monster,一个同时支持全量和增量生成Ghost静态网站的工具。
这是一个用Bash写开源项目,Github地址在这里: https://github.com/aimingoo/monster
注:
makesite.sh
在早期就是Buster一个壳,从v1.0.5版本开始直接使用wget而不再依赖Buster。
Monster的功能
- 全量和增量生成Ghost静态网站
- 可以在本地预览或向
github.io
部署生成的网站 - 支持生成并不Host在
github.io
上的网站 - 支持同时管理多个网站,独立配置
- 支持在url中使用缩短路径的风格(使用更精减的ghost slug)
- 支持Ghost的多作者(multi-author)功能
- 支持基于github issues的评论管理(面向gitment的工具功能)
安装Monster
> brew install aimingoo/repo/monster
快速上手
# 了解ghost运行的本地地址(例如下面的127.0.0.1:2368)
> npm start
Ghost is running in development...
Listening on 127.0.0.1:2368
...
# 如果你已经在Github上创建了自己的pages,那么你应该先将它clone到本地
# - (设网站domain为xxxx.github.io)
> git clone 'https://github.com/xxxx/xxxx.github.io'
# 配置初始化(用上面的项目作为工作目录)
# - 可以不使用xxxx.github.io,而使用自己的domain,例如your.site.com
# - 路径"Ghost local .db file"可用如下命令查看(或先略过它):
# > grep -Fe '.db' ${GHOST安装目录}/config.js
> cd xxxx.github.io
> monster --init
Your Github name or domain: xxxx
Your Github access token, or Enter to skip:
Your Ghost local account(e-mail), or Enter to skip:
Your Ghost local .db file, or Enter to skip:
Your Ghost site, or Enter set default [localhost:2368]:
...
# 全站生成
> monster --generate
# 更新
> monster update
# 预览(ctrl+c退出)
> monster preview
Serving HTTP on 0.0.0.0 port 8000 ...
# 发布/部署(在生成全站之后)
> monster --deploy-now
# 或发布更新(在使用'monster update'之后)
> monster update --deploy-only
# 其它
# 直接生成全站并发布
> monster --generate --deploy-now
# 或在更新后直接发布
> monster update --deploy-now
工作目录
在使用monster --init
初始化之后,当前目录就被Monster视为工作目录。
Monster会根据当前目录下的.monster
配置工作,因此只需要为多个site建立不同的目录,就可以管理multi-domain了。
Monster会操作和维护当前目录下的./static
目录来生成静态文件,你可以通过上述的.monster
配置来改变这个目录的位置。
最后,当前目录下的monster.log
和.sqlitedb
也是由Monster来管理的。你可以手工编写一个名为patchme.sh
的文件来实现一些复杂的操作,如果它存在,那么Monster会调用并管理它。
Monster的多数操作信息会直接出现在控制台,只有monster --generate
和monster update
会操作monster.log文件,前者总是覆盖整个文件,而后者是追加日志。
Monster会维护.gitignore
或.git/info/exclude
文件来避免git将多余的文件push到仓库。所以,上述./static
目录以及.monster
、.sqlitedb
、patchme.sh
和monster.log
等文件也已经加入了git的ingore list。
高级特性
关于Monster的Git issues评论、short path、sync、multi author等特性,请参考:
阅读列表