Giter Club home page Giter Club logo

ghost-static-site-generator's Introduction

Version Node License Stars Forks Issues

ghost-static-site-generator

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.

Prerequisites

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.

Installation

Linux & Mac

  1. Install wget
$ brew install wget
  1. Clone this repository
$ git clone https://github.com/itsignacioportal/ghost-static-site-generator/
$ cd ghost-static-site-generator
$ npm install

Windows

  1. Install wget via chocolatey
$ choco install wget
  1. Clone this repository
$ git clone https://github.com/itsignacioportal/ghost-static-site-generator/
$ cd ghost-static-site-generator
$ npm install

Usages

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.

NOTE: Themes other than Casper aren't fully supported. If you use another theme, you might have to manually copy the assets\built\THEME-NAME.js file from your server. NOTE: gssg has been tested only on ghost 4.48.2

Recipes

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

$ node src\index.js --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

$ node src\index.js --domain 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

$ node src\index.js --domain http://www.myhiddenserver.com:4538 --dest myblog-static-folder

API

Generating a static site

This assumes that your site is running locally at http://localhost:2368 and will output to a folder called static.

$ node src\index.js

Generate static site from a custom domain

If your site is not hosted locally you can use the --domain flag to target the your site.

$ node src\index.js --domain "http://localhost:2369"

Generate static site to a custom folder

To change the folder that the static site is generated into using the --dest flag.

$ node src\index.js --dest "myStaticSiteFolder"

Preview site

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.

$ node src\index.js --preview

Replace url

Use this flag to replace the url, use this option if your site url differs to your ghost url

$ node src\index.js --productionDomain 'http://www.mydomain.com'

Hosting a site in sub directories

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

$ node src\index.js --dest 'a-random-folder' --subDir 'a-random-folder'

Silent mode

Use this flag to hide wget output

$ node src\index.js --silent

Fail on error

This option will output the failed wget command and also any errors to the stdout before exiting.

$ node src\index.js --fail-on-error

Ignore Absolute Paths

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.

$ node src\index.js --ignore-absolute-paths

Save redirected assets as referer path

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.

$ node src\index.js --saveAsReferer

Contributing

This is still a work in progress, please feel free to contribute by raising issues or creating pr's.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.