A tool for generating static sites from ghost blogs. This is based loosely on buster but since that project has been abandoned I've decided to create a new tool.
There are many reasons for wanting to generate a static site. For example security benefits and speed. It's also possible to integrate this tool into a continuous integration process and deploy the generated site.
You need to have the following installed.
- Node >=12 or LTS
- wget v1.16 (Versions prior to will need to use the --silent flag as --show-progress is not available)
- Chocolatey (Windows only)
Note: Chocolatey usually comes with NodeJS and you don't need to install it separately.
- Install wget
$ brew install wget
- Install globally the static site generator
$ npm install -g ghost-static-site-generator
- Install wget via chocolatey
$ choco install wget
- Install globally the static site generator
$ npm install -g ghost-static-site-generator
By default the tool will default to http://localhost:2368
for the domain and generate a folder called static
in the directory that you run the tool in.
Assuming you are hosting locally on http://localhost:2368
and your domain is http://www.myblog.com
then you can run the following. You need to pass the url flag because all links need to be replaced with your domain name instead of localhost
$ gssg --productionDomain http://www.myblog.com
Assuming you are hosting remotely on http://www.myhiddenserver.com:4538
and your domain is http://www.myblogbucket.com
then you can run the following. You need to pass the url flag because all links need to be replaced with your domain name instead of localhost
$ gssg --sourceDomain http://www.myhiddenserver.com:4538 --productionDomain http://www.myblog.com
Assuming you are hosting remotely on http://www.myhiddenserver.com:4538
and you want to pull into a separate folder instead of static you can use the following command
$ gssg --sourceDomain http://www.myhiddenserver.com:4538 --dest myblog-static-folder
This assumes that your site is running locally at http://localhost:2368
and will output to a folder called static.
$ gssg
If your site is not hosted locally you can use the --sourceDomain
flag to target the your site.
$ gssg --sourceDomain "http://localhost:2369"
To change the folder that the static site is generated into using the --dest
flag.
$ gssg --dest "myStaticSiteFolder"
This will generated the site and then open the site in a new browser window. Please note: If you want to preview the site then the --productionDomain
flag is ignored. This is because the links need to replace with the preview server's url.
$ gssg --preview
Use this flag to replace the url, use this option if your site url differs to your ghost url
$ gssg --productionDomain 'http://www.mydomain.com'
Use this flag in conjunction with the --dest
flag to host sites in directories. This flag will replace all relative path urls with absolute path urls
$ gssg --dest 'a-random-folder' --subDir 'a-random-folder'
Use this flag to hide wget output
$ gssg --silent
This option will output the failed wget command and also any errors to the stdout before exiting.
$ gssg --fail-on-error
This option is intended for users who do no worry about SEO. This option will make your site truly relative and swap out all domain names for relative paths.
$ gssg --ignore-absolute-paths
This option saves redirected content with the original referer path instead of the destination path. Note: from a file size perspective this is suboptimal as it results in each redirect saving a copy of the original file.
$ gssg --saveAsReferer
This is still a work in progress, please feel free to contribute by raising issues or creating pr's.