Publishing GitBook to Github Pages
Markdown is nice. And it'd be really nice to get documentation or some notes up there with just Markdown, right? GitBook lets us do just that.
From their website:
GitBook is a modern publishing toolchain. Making both writing and collaboration easy.
Here's an example of a GitBook: Learn JavaScript.
GitBooks are however hosted on their own servers by default. If you're like me and you'd like to keep everything in GitHub, here's the way to go!
Creating your first GitBook
1. The GitBook CLI
npm install -g gitbook-cli
Not sure what npm is? It's a package manager for node. Installation instructions here.
2. Create a GIT repository
git init gitbook-test
3. Create a new GitBook
cd gitbook-test
gitbook init
Update the contents of the README.md
and SUMMARY.md
files. Build and run the book using:
gitbook serve
Make sure you add a .gitignore
like this one before making your first commit. If you'd like your pages to show up in the sidebar you'll need to update SUMMARY.md accordingly.
Set it up with GitHub
Create a new repo on GitHub and push your commits to it. If you're doing this for the first time, make sure you read everything that GitHub shows you so you understand what you're doing.
To publish a Github site, you need to push the source files to a gh-pages
branch. Let's create that.
git branch gh-pages
Let's move to the newly created branch (gh-pages
), push it to our Github repo, and come back to the original branch (master
).
git checkout gh-pages
git push -u origin gh-pages
git checkout master
Set up a gulp task to publish to GitHub Pages
First, create a package.json
file using yarn.init
. After that, run the following command to install required dependencies:
yarn add gulp gulp-gh-pages gulp-load-plugins --dev
If you don't have yarn
installed you may install it using npm install -g yarn
.
If you don't have gulp installed globally run npm install -g gulp
as well.
Create a new file called gulpfile.js
and add the following code to it:
const gulp = require('gulp');
const gulpLoadPlugins = require('gulp-load-plugins');
const $ = gulpLoadPlugins();
// Publishes the site to GitHub Pages
gulp.task('publish', () => {
console.log('Publishing to GH Pages');
return gulp.src('./_book/**/*')
.pipe($.ghPages({
origin: 'origin',
branch: 'gh-pages'
}));
});
We can now publish changes to the site using:
gulp publish
All we need to do is make sure we've run gitbook build
or gitbook serve
before that to make sure the _books
folder has the lastest files.
Here's a test repo I built using the above steps.