尽管Monster并不强制你创建与初始化工作目录,并且也不强制依赖Ghost来工作,但是“Ghost + 工作目录”仍然
是Monster的最佳使用场景。
关于在没有Ghost的情况下使用Monster的说明请看这里:将Monster用作网站离线下载的方法。
预备工作
- 你需要先启动Ghost并了解它运行在的本地地址
> npm start
Ghost is running in development...
Listening on 127.0.0.1:2368
...
Ghost可以运行在不同的模式下,上面的是development
模式,这种情况下它的缺省端口是:2368
。
另外,你需要找到Ghost运行的目录中的sqlite数据库文件。假设你的Ghost运行的目录是在${GHOST}
,那么这些数据文件的位置是在:
> grep -Fe '.db' ${GHOST}/config.js
filename: path.join(__dirname, '/content/data/ghost.db')
filename: path.join(__dirname, '/content/data/ghost-dev.db')
filename: path.join(__dirname, '/content/data/ghost-test.db')
根据你启动的Ghost的版本不同,选择上面的一个库文件即可(一般是ghost-dev.db
)。
- (discard)你需要安装Buster并确信它可用
在Monster早期版本中是调用Buster来生成全站的,但从v1.0.5版本开始就移除了对Buster的依赖。
- 你需要确信mac环境是否能运行Monster
Monster依赖mac环境上的一些工具。如果你使用brew,那么可以用下面的命令来安装它:
> brew install wget jq curl
...
其它还会使用到的工具包括sqlite3
、sum
和git
:sqlite3
应该已经在安装Ghost时安装过了,而sum
是MacOSX原生自带的;多数情况下,建议你安装git
,使用brew install git
即可。
注:
Monster主要是用于生成静态网页,只有当你使用它的部署(deploy)功能时,才会用到
git
。所以事实上git并不是必须安装。Monster使用Git api访问github issues,所以在使用评论相关的功能时并不要求安装git客户端。
- 最后,你需要安装Monster
有两种方法安装Monster:
# 使用Brew安装
> brew install aimingoo/repo/monster
# 使用Git仓库安装
> git clone https://github.com/aimingoo/monster
> ln -s "$(pwd)/monster/libexec/monster.sh" /usr/local/bin/monster
> chmod +x /usr/local/bin/monster
初始化及配置
# 创建一个目录,并在该目录中运行如下命令
> monster --init
Your Github name or domain : aimingoo
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]:
File .monster saved.
File .gitignore updated.
第一项配置Github name or domain
总是必须输入的。它可以是一个名为xxxx.github.io
的域名,或只是xxxx
这样的域名前缀(亦即是Github用户账号名),此外还可以是一个非github的域名,例如your.site.com
。
如果domain是无效的
你可以使用任何domain——哪怕它不是真实的值。Monster的基本逻辑是:
- GENERATE:下载一个
SITE
上的网页,放在STATIC_PATH
中;并尝试 - RESET_DOMAIN:将网页中有关
SITE
的信息替换成DOMAIN
;以及 - DEPLOY_NOW:将
STATIC_PATH
中的文件复制到当前目录,并尝试将当前目录作为Git仓库来部署。
所以只要不启用RESET_DOMAIN(传入--reset-domain=false
参数或者修改.monster
配置),那么无效的DOMAIN是不影响Monster的使用的。
如果domain是空值
在调用monster --init
并输入缺省配置时,是不能使domain值为空的。
你可以编辑.monster
以使该参数值为空,但这样的配置仅对update工作模式是有意义的。这会缺省使用<GITHUB_USER>.github.io
来作为DOMAIN值,如果在update工作模式中调用了--deploy-now
、--deploy-only
或--reset-domain
,那么该值也会通过命令行参数传入makesite.sh
,以确保后者可用。
你不应当使.monster
文件中的DOMAIN
和GITHUB_USER
值同时为空值。——如果是这样,你就必须总是从命令行中传入参数了。
关于domain的协议
由于Monster并不访问你的domain(它只是更新本地静态网页中的内容),所以在配置文件中并不需要指定domain使用的协议,例如https
或http
。但有一个极小极小的例外,如果:
- 你使用了Git issues来作评论,并且
- 你的domain并没有host在
xxxx.github.io
上,并且 - 你还打算使用Monster的
update --sync-issue
来管理它,
那么你需要修改.monster
中的PROTOCOL
参数,缺省时它的值是https
。
如果没有.monster
文件
如果你没有调用monster --init
来初始化一个.monster
文件,或者你误删除了它,那么你事实上仍然是可以使用Monster的。
这种情况下,对于generate工作模式来说,你必须从命令行通过--domain
传入DOMAIN参数;对于update工作模式来说,则必须传入--db
。当然你还可能需要传入其它在运行中要用到的参数,例如GITHUB_USER
。
配置文件.monster的详细说明
## Github domain
# - (参见上文)
DOMAIN="..."
## Ghost .db file path
# - update工作模式下的相关功能依赖该配置
DB="/User/..."
## Ghost site address
# - 要静态化(下载)的网站,可以是本地Ghost或远端的任何网址
# - 可以是任何网站(不是Ghost的网站,甚至不是博客)
SITE="http://..."
## Github account, and rate of api access
# - 你的Github账号,是指当前工作目录对应的xxxx.github.io
GITHUB_USER="Your name"
# - 你需要在Github后台为Git client创建一个Access token
GITHUB_TOKEN="Access token"
# - 每次Github API访问之后sleep的时间(单位为秒);当值为1时,意味着每分钟不会超过60次访问
GITHUB_APIRATE=1
# - 当读取Gitment等博客评论时,每次用Github取数据时的页大小(缺省为每页100条记录)
GITHUB_PAGESIZE=100
## Other
# - 你在本地Ghost中的登录帐号
EMAIL="..."
# - 特殊情况下需要用到的domain的协议值(参见上文)
PROTOCOL="https"
## Advertisement token string for your site
# - 一个标记字符串,极少使用(仅在update功能中用于检查特定文件中是否包含该字符串,以确保整个内容有效)
AD_TOKEN=""
## Default directory of static files
# - 生成静态文件的路径
# - (对于Monster的preview工作模式来说,必须使用该配置而不能用命令行传入参数)
STATIC_PATH="./static"
## Default behavior
# - 在GENERATE阶段中显示更多信息
GENERATE_INFO=false
# - 在update工作模式下,强制更新列表类网页
SYNC_REMOVED=false
# - 在操作过程中是否移除static目录中的文件名的'?xxxxxx'版本后缀
PATCH_VERSION=true
# - 是否启用RESET_DOMAIN阶段
RESET_DOMAIN=true
# - 是否启用SHORT_PATH阶段
SHORT_PATH=false
# - 是否启用CHECK_STATIC阶段
CHECK_STATIC=true
## Pick more files
# - 是否拾取静态化的云标签文件/tag-cloud
PICK_STATIC_TAGCLOUD=false
# - 是否拾取静态化的profile文件/profile-xxx
PICK_STATIC_PROFILE=false
# - 是否拾取静态化的归档文件/archive-post
PICK_ARCHIVES_POST=false
# - 是否拾取/robots.txt
PICK_ROBOTS_TXT=true
# - 是否拾取sitemap文件/sitemap-*
PICK_SITEMAP=true
# - 在update工作模式下,强制尝试上述PICK_xxxx和索引页等文件
FORCE=false
## Other override
# - 在SHORT_PATH阶段中不处理的目录名
IGNORE_LIST=("archives-post" "author" "page" "rss" "tag" "assets" "content" "shared")
# - 在PATCH_VERSION阶段中需要处理的目录名
VERDIR_LIST=("assets" "shared" "public")