How to publish a Gatsby site to GitHub Pages


I was recently updating my personal site whe all of a sudden I realized I’d managed to publish the repo’s README.md as the homepage. After a brief moment of panic, I remembered I’d recently transitioned over to using gh-pages package to manage my deploys.

As it turns out, the suggested package.json deploy script in that package’s readme

"deploy": "gatsby build && gh-pages -d public -b master"

doesn’t account for people to publish GitHub pages to custom domains. Therefore, every deploy would erase the CNAME file in the root directory since this is not automatically created by the gastby build script.

Solution? Just adding cp CNAME public to the deploy command ensures we don’t delete the existing CNAME file on deploy. So our package.json scripts would end up looking something like:

"scripts": {
  ...
  "deploy": "gatsby build && cp CNAME public && gh-pages -d public -b master"
}